» アドオン開発
Firefox 23 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 23 の翻訳です]
Firefox 23 が 8 月 6 日 [日本時間同日深夜] リリース となります。Firefox 23 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 23 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 検索エンジンの設定が統合されました。
keyword.URL
は Mozilla のサポートチームにとって長年悩みの種となっていました。多くの不要なアドオンがこの設定項目を変更し、ユーザが意図しないエンジンを設定することで、まったく望まない検索結果を表示していたからです。この問題が修正され、検索バーで選択されている検索エンジンがロケーションバーのキーワード検索にも使われるようになりました。この変更は短期的には上級者にとって不愉快なものとなるかもしれませんが、アドオンで上書きすることも簡単なはずです。 - 混在アクティブコンテンツをブロックする設定が有効化されました。AMO では従来から、安全なドメインへのアクセス時に安全でないコンテンツを拡張機能が挿入することを禁止しています。今回の変更により、そうした操作が常時禁止されることとなります。詳しくは Tanvi Vyas のブログ記事 を参照してください。
StartDocumentLoad
、EndDocumentLoad
、FailDocumentLoad
通知が廃止されました。これらのオブザーバ通知は、より標準的な他の読み込みイベントで簡単に置き換えられます。- サービスの
preferences.js
がPreferences.jsm
として Toolkit へ移動されました。あなたのアドオンがresource://services-common/preferences.js
を使っている場合は、単にresource://gre/modules/Preferences.jsm
へ書き換えてください。 - 開発ツールのエイリアスが
browser/content/devtools/*
へ変更されました。これに伴い一部のファイルが移動されています。特に注目すべきなのは、デバッガウィンドウの URI がchrome://browser/content/devtools/debugger.xul
へ変更されたことです。 createEvent("AnimationEvent")
、createEvent("TransitionEvent")
、initAnimationEvent
、initTransitionEvent
の対応が廃止されました。
XPCOM
URI_SAFE_FOR_UNTRUSTED_CONTENT
が特権付きabout:
ページ内で使えなくなりました。あなたのアドオンが独自のabout:
ページを実装している場合、今後このフラグを使えないことに注意してください。つまり、そのページ内で XUL を使ったり特権付きコードにアクセスしたりする操作は許容されなくなります。- フォームの入力履歴が非同期ストレージ API を使うようになりました。
Sanitizer
オブジェクト内のサニタイズ関数が代わりに保証を返すようになりました。また、autoCompleteSearch
を使っている場合は、resource://gre/modules/FormHistory.jsm
に含まれているautoCompleteSearchAsync
に置き換える必要があります。 nsIPluginTag
のclicktoplay
フラグを解除できない問題が修正されました。これにより、nsIPluginTag.disabled
とnsIPluginTag.clicktoplay
が読み取り専用となりました。nsISidebar
のコードが整理されました。これにより、nsISidebar
、nsISidebarExternal
両インタフェースの大半に変更が加えられました。差分はこちら。
新機能
XPCNativeWrapper.unwrap
が任意の入力を受け付けるようになりました。変更の概要はバグのコメント 16 を参照してください。 Xray ラッパーを操作できるより便利な API がComponents.utils
にあります。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 23 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は来週か再来週に行われますので、AMO に Firefox 22 対応のアドオンを登録している方は後日メールをチェックしてみてください。
Firefox 22 アドオン互換性追加情報
[これは Mozilla Add-ons Blog の記事 Firefox 22 Compatibility Update の翻訳です]
約 1 週間前に Firefox 22 アドオン互換性情報 の記事を投稿しましたが、筆者 [Jorge Villalobos] は今日、一部のアドオンに影響する可能性があり、後方互換性を壊す新たな変更について知りました。実際に影響を受ける可能性は低そうとはいえ、この変更についてあらかじめ知っていれば前回の記事で言及していたはずですので、この追加情報を公開する必要があると判断しました。
上書きしたコンポーネントが domfiles
ゲッターを実装していないと nsIFilePicker
がクラッシュします。このクラッシュバグは最近報告されたもので、nsIFilePicker
コンポーネントを上書きしているアドオンによって引き起こされたものでした。nsIFilePicker
インタフェースに変更を行った Bug 832923 が原因で、Firefox 22 以降でクラッシュが確認されました。あなたのアドオンが似たような機能を提供している場合は、その実装を更新して domfile
と domfiles
ゲッターを必ず含めるようにしてください。
クラッシュバグは修正されましたので、インタフェースの不一致が見られた場合でも Firefox はクラッシュしなくなりました。ただいずれにしても、影響を受けるアドオンは更新されない限り正しく動作しません。
Firefox 22 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 22 の翻訳です]
Firefox 22 が 6 月 25 日 [日本時間同日深夜] リリース となります。Firefox 22 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 22 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
更新: 最近発見された もうひとつの互換性問題についての記事 も参照してください。
一般
- 既定のズームレベルを設定するアドオンが、Firefox の高解像度ディスプレイ (HiDPI) 対応後、Windows 上で予期せぬ結果をもたらす問題 が確認されています。
nsIMarkupDocumentViewer.fullZoom
を使っているアドオンが、特定の状況でこの問題を引き起こします。 getUserData
とsetUserData
がクロームコード専用となりました。これらの関数はコンテンツ上のスクリプトでは使えなくなりました。アドオンを含む特権付きコードからのみ使用可能となります。FillInHTMLTooltip
が XBL バインディングへ移植されました。そのためbrowser.js
内のグローバル関数ではなくなりました。
Places
22 では Places 関連コードのさらなるクリーンアップが行われ、ファイルシステムアクセスが非同期となりました。これらの関数やオブジェクトの代替方法については Places ユーティリティ ドキュメントを参照してください。
- 非推奨となっていた同期 favicon API が削除されました。
nsIFaviconService
から次のメソッドが削除されました。setFaviconUrlForPage
、setAndLoadFaviconForPage
、setFaviconData
、setFaviconDataFromDataURL
、getFaviconData
、getFaviconDataAsDataURL
、getFaviconForPage
、getFaviconImageForPage
nsIGlobalHistory2
の実装が削除されました。nsIBrowserHistory
がnsIGlobalHistory2
を拡張しなくなったため、addURI
、isVisited
、setPageTitle
の実装が削除されました。markPageAsXXX
メソッドがnsINavHistoryService
へ移動されました。これらの関数はnsIBrowserHistory
からnsINavHistoryService
へ移動されました。nsINavHistoryService::AddVisit
が削除されました。- 非推奨となっていた
nsILivemarkService
インタフェースが削除されました。
XPCOM
- コンテンツスコープ内での
Components
オブジェクトの定義が削除されました。Components
オブジェクトは、Bug 429070 に書かれているいくつかの例外 (DOM インタフェース定数) を除いて、コンテンツから利用できなくなりました。 nsITreeView
で使用されていたnsISupportsArray
が削除されました。これにより、getRowProperties
、getCellProperties
、getColumnProperties
のシグネチャと戻り値タイプが変更されました。これらの関数はスペースを区切り文字としたリストを返すようになりました。- ダミーの
PrivateBrowsing
サービスが削除されました。一時的な互換性確保のためだけに残されていたnsIPrivateBrowsingService
が完全に削除されました。 attributes
がNode
ではなくElement
で定義されるようになりました。attributes
プロパティはNode
ではなくElement
のメンバーとなりました。- NSPR と NSS が
mozjs
(Windows 用) やlibxul
(その他のプラットフォーム用) に含まれるようになりました。あなたがバイナリコンポーネントを含むアドオンを開発している場合や、その他の理由で Mozilla のコードをビルドしている場合、これはおそらく重要な変更です。筆者 [Jorge Villalobos] は既に、このためにビルドに失敗したという連絡を何度か受けています。
新機能
- アドオンがダウングレードもしくはアップグレードした場合、ブートストラップ関数にそれぞれのバージョン番号が振られるようになりました。あなたの拡張機能がブートストラップ型の場合、これによってアドオンのアップグレードを行う際により詳しい情報を得られるようになります。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 22 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO にアドオンを登録している方はメールをチェックしてみてください。
アドオンの互換性に影響する Firefox 25 の大幅な変更点
[これは Mozilla Add-ons Blog の記事 Major compatibility changes coming for Firefox 25 の翻訳です]
Mozilla では数週間前に Firefox 21 をリリースしたばかりですが、それと同時に 22 が Beta、23 が Aurora、24 が Nightly へ移行しました。Firefox 25 は 10 月下旬 までリリースされませんので、まだ十分に時間の余裕があります。しかし 24 が延長サポート版 (ESR) となる予定であることから、これは重要なリリースとなります。一部の大幅な変更は、潜在的な影響を最小限に抑えるため、ESR の次のバージョンへ投入されるからです。
Firefox 25 ではアドオンの互換性に影響する 2 つの大きな変更が計画されており、開発者の皆さんが前もって認識し早めに対策を取れるよう、ここで告知しておきたいと思います。変更点はまだ今後変わる可能性もありますので、適宜告知を行っていきますが、7 月に出る Nightly ビルド、あるいは 8 月中に出る Aurora ビルドは必ずチェックしておくべきでしょう。アドオンは主に以下の変更の影響を受ける可能性があります。
Australis
これは長期間にわたって作業が進められてきた Firefox テーマの大幅な刷新です。その目的のひとつは UI の簡素化で、アドオンについても考慮されています。
中でもツールバーの仕組みに大幅な変更が行われる予定です。アドオンバーを完全に削除するという提案に関しては 堂々巡りの議論 が行われています。最終決定はまだ行われていないようですが、最良のシナリオでもカスタマイズ対象が見つけづらくなり、最悪の場合は完全に削除されるでしょう。
メインのツールバーもアドオンのボタンやウィジェットのための専用エリアです。しかしユーザが作成した独自のツールバーは削除される模様です。概して、最小限のツールバー UI を提供すべきということです。多くのアドオンは既にそうなっていますが、ツールバーボタンを追加するための API が今後大幅に変わる可能性もあり、すべてのアドオンが対応を迫られるかもしれません。
Australis の変更点は UX Nightly Branch をインストールすることで事前にテストできます。その結果何かフィードバックがあれば、原文のコメント欄 でお知らせください。
セッション復元
Firefox ソースコードの他の部分と同様に、セッション復元もまたパフォーマンス向上のため非同期対応が行われているところです。Bug 874381 とその依存バグを見れば、このモジュールにアドオンに影響するいくつかの変更が行われていることに気付くでしょう。具体的には、多くのアドオンが依存している (__SS
で始まる) プライベート変数が削除されました。
影響を受けるアドオンは yoric のブログ記事 にリストアップされており、一部の開発者には既に連絡が行っています。ですが念のため、あなたのアドオンがそれらのプライベート変数に依存していないか自分自身でも確かめて、必要な場合は 25 での削除に先立ち対策を行うようお願いします。
Firefox 25 のリリースが近づいてきたら、より詳しい情報を提供できるはずですし、おそらく関連するドキュメントもまとめられるでしょう。現時点では、この記事が参考となり、来たる大幅な変更に向けて皆さんが調査を始められることを願っています。
Mozilla Hackathon 2013春 終了!!
4 月 27 日、28 日の 2 日間にわたって行った Mozilla Hackathon 2013 が無事終了しました。
今回は、乃木坂の Mozilla Japan 新オフィスに合計 28 名の参加者が集まり、
それぞれに持ち寄った作業を行いました。
今回も 10 年以上 Mozilla で活躍されているベテランコントリビューターや有名なアドオンの開発者から
Mozilla のイベントに初めて参加される方まで、様々な方が参加されました。
初日は 13 時からスタート。
参加者は、翻訳や製品ローカライズを行うチーム、アドオンや Firefox OS 用アプリの開発を行うチーム、
そして Firefox それ自身の実装や改良を含むプラットフォーム開発を行うチーム、の3グループに分かれ、
自己紹介タイムをはさみつつ、18時過ぎまで作業を行いました。
その後、参加者のほぼ全員による懇親会が行われました。
2日目の作業開始時刻は午前 9 時。
精力的に作業を行い、15 時からの成果発表を迎えました。
各人・各チームがそれぞれの作業内容とその成果を発表し、2日間にわたるイベントを締めくくりました。
参加された方々は、真剣に作業される一方、他の方々との交流も大切にされていました。
今後もこのようなオフラインでの交流の機会となるようなイベントを開催できればと思います。
今回参加されなかった方も、機会がありましたらぜひご参加ください!
Firefox 21 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 21 の翻訳です]
Firefox 21 が 5 月 14 日 [日本時間同日深夜] にリリースとなります。Firefox 21 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 21 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- プラットフォームとアプリケーションのリソースが分離され、個別に読み込めるようになりました。Firefox の Metro 対応を行うにあたって、広く利用されている各種 JavaScript モジュールを含め、いくつかの変更が必要となりました。
- Firefox 20 およびそれ以前では、
resource:///modules/
、resource://gre/modules/
、resource://app/modules/
は同じ場所を指します。 - Firefox 21 およびそれ以降では、
resource://gre/modules/
とresource://app/modules/
は異なる場所を指し、従ってそこに含まれるモジュールも別々となります。resource:///modules/
はresource://app/modules/
を指します。ただし、開発者が必要とするモジュールの多くは/gre/
にあります。最も簡単なテスト方法は、Firefox 21 もしくはそれ以降のバージョンを開き、あなたの拡張機能でモジュールのインポートに使用している URL を読み込んでみることです。従来通り動作するようであれば、修正の必要はありません。
- Firefox 20 およびそれ以前では、
- XBL スコープが有効となりました。XBL バインディングをコンテンツページに挿入する場合、クロームに対する、あるいはクロームからの関数呼び出しが特定の状況で失敗するようになり、追加のコードが必要となります。詳しくはバグを参照してください。
language
属性を通じてより上位の JavaScript バージョンを指定できる機能が削除されました。これは、XUL ドキュメント内であっても、language
属性を使って JavaScript のバージョンを明示的に設定することができなくなったということです。- SpiderMonkey から E4X が削除されました。E4X は今後使用できません。
-moz-orient
プロパティがauto
キーワードに対応し、それがデフォルト値となりました。-moz-user-select:none
が-moz-user-select:-moz-none
と同じ挙動になりました。parseInt
関数が 10 進数でパースされるようになりました。parseInt("042")
は42
となります。
Places
- Places から廃止予定となっていた同期 API が削除されました。一部の同期間数が削除されました。変更点の一覧はバグの最初のコメントを参照してください。これはニュースグループでも 事前に告知されていました。
nsINavHistoryFullVisitResultNode
が削除されました。これにより、一部のアドオンで使用されている 2 つの定数、nsINavHistoryResultNode.RESULT_TYPE_FULL_VISIT
とnsINavHistoryResultNode.RESULT_TYPE_DYNAMIC_CONTAINER
も併せて削除されたことに注意してください。PlacesUIUtils.showBookmarkDialog
から廃止予定となっていた 3 番目の引数が削除されました。- FUEL からライブブックマーク対応が削除されました。
onBeforeDeleteURI
とonBeforeItemRemoved
が削除されました。- Places のクエリ結果におけるノード置換が廃止され、
nodeReplaced
ビュー通知が削除されました。nsINavHistoryResultObserver.nodeReplaced
も削除されました。
XPCOM
nsIDownloadManagerUI
が旧式のダウンロード ID を使っている問題が修正されました。オプションのダウンロード ID 引数はnsIDownload
オブジェクトとなりました。ContentChild
のnsIConsoleListener
において、addref
、release
両メソッドがスレッドセーフ化されました。この変更は Bug 852220 によって行われました。簡単に言えば、メッセージが記録されたときに、即座にnsIConsoleListener
オブジェクトが通知されると期待すべきでないということです。リスナーを削除してしまうとメッセージを失う可能性があります。NodeIterator
とTreeWalker
からexpandEntityReferences
が削除されました。nsSelectionIterator
が削除されました。nsISelectionPrivate.getEnumerator
も削除されました。
新機能
- 言語パックが初期設定で再起動不要となりました。
- 安全な PRNG が DOM 内に露呈されるようになりました。
window.crypto.getRandomValues
で暗号学的にランダムな値を得ることが可能となりました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 21 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO にアドオンを登録している方はメールをチェックしてみてください。
学生Firefox Add-On勉強会vol,2 レポート
新しくなったMozilla Japanのオフィスのコミュニティスペースで第2回を開催しました。
今回も、
「Add-Onは使っているけど、Add-Onの開発は未経験。興味を持っているけど、どうしたらいいかわからない!」
そんな学生を対象としたAdd-On勉強会を学生マーケで開き、少しでもFirefoxへの興味を持ってもらおう。
ATNDを通じて7人の参加者にお集まり頂きました。
福島〜近畿まで、他のイベントと日程が近い関係もあるらしく、全国からお集まり頂きました。
それぞれのレベルも、コマンドライン初体験〜IonMonkeyのバクフィクサー見習い まで今回も幅広く集まりました。
講師:あっきー
参加者:10人
お持ちいただいたもの:ノートPC持参
Twitter:#gakumoz
まずは、Add-Onの開発環境の導入はみんなで。
続いて、Add-Onっていっても何作ったらいいかわからない人向けに
あっきー自作の、”画面が左右に20°傾くアドオン”を解説。
後半は、各自実装タイムです。
実装時間タイムです。
小さい子も見に来てくれた?
そして、Add-On作者としても有名で、先日Mozillaでのコミュニティ活動が認められOSS奨励賞を受賞されたpiroさんがふらっと来てくださりました!
貴重なアドバイスや、総評をいただきとても勉強になりました!
最後に今回実装したAdd-Onや実装しようとしたアイデアや躓いたところを発表
<今回のAdd-Onのアイデア達>
・”Mozzila”などの打ち間違えを”Mozilla”に訂正してくれる
・Webページのテキスト情報を集約する(文字数とか、句読点とか)
・サイトに落書きをするアドオン(canvas使用)
・マウスオーバーでパネルの中にもう一つhtmlを読み込むアドオン
・勝手にブックマークするアドオン
・モーションキャプチャーでブラウザ操作するアドオン
・Firefoxオープンソース化15周年自動Tweetアドオン
・漫画jojo奇妙な冒険の登場人物シュトロハイムさん風の語調にするアドオンンンンンンンン
・アイコンをクリックすると登録したNewsサイトを一気に表示してくれるアドオン
・Firefoxのショートカットキー 一覧を表示させるアドオン
・いろんな座標軸でページを回転させるアドオン
・ヤフーニュースをツールバーに表示させるアドオン
・Firefox Syncで使うパスワードランダムに生成しクリップボードにコピーしてくれるアドオン
・気になったキーワードをはてぶで自動で検索するアドオン
今回は、アドオンを短い時間ながらも実装し、形にできた人が多かったですね。
piroさんからも総評をいただけました!
最後はみんなで集合写真をとって、今回もたくさんの参加ありがとうございました。
<アンケート集計結果>
普段使用しているブラウザ:Firefox,Google Chrome,Opera,Safari
今日の勉強会のレベル:難しい(3),ちょうどいい(8
普段使用している言語:JavaScript(3) , Python(1),C++(4) , C(5) , Java(4) , C# , Dart , Perl,あまり開発しない(3)
興味分野:Webdev(3),App開発(10),オープンソース(4),ハード,Kinectハック
こんな勉強会がほしい:FirefoxOS , WebApp , 今日のような感じで具体的な課題が欲しい , Mozilla製品関連 , FirebugやWeb開発が捗る勉強会
今回作成したテキスト
学生アドオン勉強会テキストVer.2.5
Firefox 20 アドオン互換性情報
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 20 の翻訳です]
Firefox 20 が 4 月 2 日 [日本時間同日深夜] にリリースとなります。Firefox 20 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 20 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 遅延タブ復元の実行時に、未復元の
<browser>
にdisplay:none
が設定されるようになりました。これにより、セッション復元が行われたもののまだユーザによって選択されていないタブの読み込みによるメモリ使用量が最小限に抑えられます。その一方で、読み込みが完了するまで、アドオンからそれらのタブ内のコンテンツへアクセスすることが不可能となります。読み込まれていないタブはtab.getAttribute("pending")
もしくはtab.linkedBrowser.getAttribute("pending")
で確認できます。 - ブックマーク書き出しサービスが JavaScript モジュールへ移植されました。
nsIPlacesImportExportService
が廃止され、移行関連の関数がBookmarkHTMLUtils.jsm
へ移動されました。 - ダウンロードパネルが実装されました。ダウンロードマネージャは引き続き存在していますが、この新しい UI によってダウンロードの初期表示方法が大幅に変わります。
javascript.options.xml.chrome
が初期設定で無効化されました。これは Firefox からの E4X 対応の完全削除に向けた次なる一歩です。- リダイレクトの訪問が履歴オブザーバを通じて通知されなくなった問題が修正されました。これにより、履歴オブザーバがいくつかの新しい予期せぬ通知を受け取ることになります。
プライベートブラウジング
プライベートと非プライベートのウィンドウを同時に開けるよう、プライベートブラウジングモードに変更が加えられています。つまり、多くの XPCOM インタフェースやその他の関数が、新仕様に対応するため変更されつつあるということです。
- グローバルプライベートブラウジングサービスが削除されました。これにより、実際に使用されているすべてのサービスから
nsIPrivateBrowsingService
が削除されました。このインタフェースは後方互換性維持のため 残されています が、オブザーバ通知 (private-browsing
、private-browsing-transition-complete
、private-browsing-cancel-vote
、private-browsing-change-granted
) を含めて、中身はまったくの空となっています。
新しいプライベートブラウジングモードに関しては、以下のドキュメントに詳しい情報が載っています。
XPCOM
|non editable element|.QueryInterface(Components.interfaces.nsIDOMNSEditableElement)
が例外を投げない問題があります。編集可能な要素の確認にQueryInterface
を使っていた場合、そのコードは 20 では動作しないでしょう。これは 21 以降では修正されていますが、instanceof
による代用が推奨されます。imgTools::DecodeImageData
のリファクタリングが行われました。decodeImageData
が廃止予定となり、代わりに新たな関数decodeImage
が同インタフェースへ追加されました。XMLSerializer
とDOMParser
が WebIDL バインディングへ変換されました。nsIDOMParserJS
が削除されました。代わりのインタフェースはnsIDOMParser
を参照してください。image-sniffing-services
の対応が削除されました。これにより XPCOM カテゴリのimage-sniffing-services
が削除されました。EventSource
が Paris バインディングへ変換されました。nsIEventSource
が削除されました。
新機能
- フォームのボタンや
select
要素上でコンテキストメニューが表示されない問題が修正されました。 RemoveAllDownloads
API がnsIDownloadHistory
へ追加されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 20 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO にアドオンを登録している方はメールをチェックしてみてください。
Firefox 20 以降の主なアドオン互換性問題
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility Updates, Firefox 20 and above の抄訳です]
この記事は、開発者が留意すべきアドオン互換性問題を取りまとめたものです。ほどんとは、このブログに今後投稿するバージョン別の互換性情報にも掲載しますが、事前にお知らせしておくのが良いかと思い、今回記事にしました。
非同期 Places [21]
Places の完全非同期化に向け、Firefox 21 で多数の Places API が削除されます。変更が行われる API の一覧と議論は この dev.extensions のスレッド で確認できます。
ウィンドウ別プライベートブラウジングモード [20]
ウィンドウ別プライベートブラウジングモードの実現に向け、過去数バージョンで様々な変更が加えられてきました。Firefox 20 では、nsIPrivateBrowsingService
や一部のオブザーバ通知など、残されていた機能の大半が削除されます。
遅延タブ復元 [20]
Firefox は既にこの機能を実装しており、Firefox の起動後、前回のセッションで開いていたタブは選択後に読み込まれる挙動となっています。この機能をさらに最適化しメモリを削減するため、これらのタブ内の browser
要素に display: none
が設定されます。つまり、docShell
や browser.contentWindow
の存在など、それらのタブの参照に関する多くの前提が崩れるということを意味します。もしあなたのアドオンで既存のタブのコンテンツを参照している場合は、まだ読み込まれていないタブがあったとしても正しく動作するかどうか確認してください。これは現在ベータ版として公開されている Firefox 20 の変更点です。
Java の Click-to-Play
Java のため継続的に実施してきた Click-to-Play 機能によるブロックが、Java のコードに依存している一部アドオンの互換性を損なう可能性があります。私たちは、Java の採用を中止し、JavaScript または外部ライブラリと JS-ctypes を使ってアドオンのコードを実装するよう強く推奨します。あなたのアドオンがまだ Java に依存しており、Click-to-Play に関する問題に遭遇した場合は、このバグが参考になるかもしれません。
Firefox 19 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 19 の抄訳です]
Firefox 19 が 2 月 19 日 [日本時間同日深夜] にリリースとなります。Firefox 19 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 19 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- XML イベントが削除されました。これは、だいぶ前に廃止された XForms に関連する無名の機能でした。
- XTF が削除されました。これも XForms 関連の機能でした。
mozallowfullscreen
の接頭辞が外れてallowfullscreen
となりました。
プライベートブラウジング
プライベートと非プライベートのウィンドウを同時に開けるよう、プライベートブラウジングモードに変更が加えられました。これは、多くの XPCOM インタフェースやその他の関数が、新仕様に対応するため変更されたということを意味します。変更の多くは、呼び出し元のコンテキストを関数に伝える新たな引数の追加で、それらの関数はその値に従って動作するようになりました。
ContentPrefService
がグローバルプライベートブラウジング状態を使用するようになりました。このサービスの全メソッドについてコンテキスト渡しが必須となりました。nsNavHistory
がグローバルプライベートブラウジング状態を使用するようになりました。ウィンドウ別プライベートブラウジングに対応するため、History
コンポーネントコードの一部に変更が加えられました。ただし、このパッチには API の変更は含まれていません。- ダウンロードに GUID が追加されました。これにより、
nsIDownloads
に GUID が追加され、GUID ごとにダウンロードを処理する API も用意されました。他の API も今のところ使用できますが、徐々に廃止予定となります。 nsStrictTransportSecurityService
がグローバルプライベートブラウジングサービスを使用するようになりました。
新しいプライベートブラウジングモードに関しては、以下のドキュメントに詳しい情報が載っています。
XPCOM
nsIConsoleService::GetMessageArray
のシグネチャが改善されました。これは API の改善ですが、多くのアドオンに影響します。getMessageArray
関数は、戻り値を保持するために変更される可能性のあるオブジェクトを渡すことが必要なコードで使われていました。この関数が変更され、配列を返すようになりました。そのため、msgArray = consoleService.getMessageArray(…);
のような処理が可能となります。DOMImplementation
が Paris バインディングに移植されました。これによりnsIDOMDOMImplementation
が変更され、スクリプトからの使用が不可能になりました。nsIDOMCanvasRenderingContext2D
インタフェースが削除されました。これにより、DRAWWINDOW_
定数を除き、nsIDOMCanvasRenderingContext2D
のすべての関数・プロパティが削除されました。nsIUrlListManager.safeLookup
が更新されない問題が修正されました。safeLookup
関数が引数としてnsIPrincipal
を取るようになりました。imgIRequest::loadImage
のaRequest
引数が削除されました。nsIChannel
が変更され 64 ビットcontent-length
対応になりました。これは単なる戻り値の種類変更なので、もしあったとしても影響を受けるのはバイナリアドオンだけです。
新機能
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 19 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はまもなく行われますので、AMO にアドオンを登録している方はメールをチェックしてみてください。