Firefox 7 for developers
Firefox 7 は 2011 年 9 月 27 日にリリースされました。このページは Firefox 7 のリリースにあたり、開発者に関係する変更についてまとめたものです。
ウェブ開発者向けの変更点一覧
>HTML
HTMLHeadElementのprofileプロパティが削除されました。このプロパティは Gecko 2.0 から非推奨となっていました。HTMLImageElementのxプロパティとyプロパティが削除されました。HTMLSelectElementのadd()メソッドのbefore引数が optional となりました。<body>のbackground属性が URI として解決されなくなりました。この変更は HTML 仕様への準拠によるものです。<option>のlabel属性が指定されていない場合、要素の内容テキストを反映するようになりました。
Canvas
setTransform(),bezierCurveTo(),arcTo()に不正な値を与え呼び出したとき、例外が投げられなくなりました。これらは無視されます。isPointInPath()メソッドに与えられた点と現在のパスを比較するにあたり、変換マトリクスを適切に考慮するようになりました。strokeRect()メソッドが幅 0 高さ 0 で呼び出された場合、何もしなくなりました。drawImage()メソッドが幅 0 もしくは高さ 0 で呼び出された場合、<canvas>はINVALID_STATE_ERRを投げるようになりました。drawImage()メソッドが非定形の座標で呼び出された場合に、例外が投げられなくなりました。toDataURL()が JPEG の品質を制御する引数を受け付けるようになりました。globalCompositeOperationの値から、非標準だったclearとoverが削除されました。- 影 が
source-over合成処理の場合にのみ描画されるようになりました。 - Canvas の塗りつぶし方を設定する
mozFillRuleアトリビュートが追加されました。
CSS
text-overflowがサポートされました。-moz-orientが修正され、縦配置の<progress>でも進行方向が適切なものになりました。
MathML
- XLink href が復活し、また MathML3 の
href属性もサポートされました。リンクには後者の属性を使うことが望まれます。 <mpadded>要素にvoffset属性のサポートが追加されました。またlspace属性の挙動も修正されました。- トップレベル要素である
<math>要素が<mstyle>要素のもつ属性すべてを受け入れるようになりました。 - Asana Math フォントのサポートが追加されました。
<mfrac>要素によって表される分数の線の太さmediumが修正され、規定の太さになりました。- 負のスペースを表すキーワード がサポートされました。
DOM
Fileインターフェイスの非標準なメソッドgetAsBinary(),getAsDataURL(),getAsText()が削除されました。あわせて、非標準なプロパティfileNameとfileSizeも削除されました。Blobによってデータが指定され、またContent-DispositionHTTP ヘッダーが送信されたとき、FormDataインターフェイスはファイル名を空文字列として報告しないようになりました。これによって幾つかのサーバーに起こっていたエラーが解消されます。element.dir属性が結果を常に小文字で返すようになりました。これは HTML 仕様の要件によるものです。FileReaderのreadAsArrayBuffer()メソッドが実装されました。document.createEntityReferenceが削除されました。このメソッドは適切に実装されておらず、他のブラウザーのほとんどで実装されていませんでした。document.normalizeDocumentが削除されました。今後はNode.normalizeを利用してください。indexが範囲外の場合、DOMTokenList.itemがundefinedを返すようになりました。これまではnullを返していました。Node.getFeatureが削除されました。HTMLInsElementインターフェイスとHTMLDelElementインターフェイスが削除されました。これは<ins>と<del>要素が実際にはHTMLModElementを使用していたためです。- 新しい DOM4 仕様にある
AttrがNodeを継承しない (DOM Core 1, 2, 3 まではしていた) という定義に準拠するため、Attrインターフェイス上のNodeプロパティやメソッドについて、将来的にこれらを削除するといった意味の 警告を出す ようになりました。 Windowオブジェクトにwindow.ondeviceorientationプロパティとwindow.ondevicemotionプロパティのサポートを追加しました。window.resizeTo、window.resizeBy、window.moveTo、window.moveByはメインウィンドウに適用されなくなりました。
JavaScript
Function.arityプロパティが削除されました。今後はFunction.lengthを利用してください。
WebSocket
- 設定項目に
network.websocket.max-connectionsが導入されました。これは WebSocket の同時最大接続数を決定するために使用されます。既定値は 200 です。 - WebSocket プロトコルで使用するプロトコルバージョンが、IETF draft 10 で指定されているバージョン 8 になりました。Firefox 6 ではバージョン 7 が使われていました。
- WebSocket API が Firefox Mobile でも利用可能になりました。
Console API
- web console が開かれる前に
console.logによって記録されたメッセージもあらかじめ記録され、web console が開かれた時に表示されるようになりました。
Web Timing
- Navigation Timing 仕様の初期実装が完了しました。
XML
- XSLT スタイルシートはこれまでサポートされていた
text/xslに加えて、正式なMIME型application/xslt+xmlも利用可能になりました。(スタイルシート処理命令もしくは HTTP Link ヘッダーで利用できます。)
Mozilla 開発者とアドオン開発者向けの変更点
これらの変更は、アドオン開発者と、Mozilla 本体のコードに関わっている開発者の双方に影響するものです。アドオン開発者は アドオンの Firefox 7 対応 に書かれている追加情報も参照してください。
メモ: Firefox 7 では、従来のメジャーリリースと同様に、バイナリーコンポーネントをコンパイルし直す必要があります。詳しくは バイナリーインターフェイス をご覧ください。
JavaScript コードモジュール
FileUtils.jsm
- 書き込みのための、安全でない状態のファイル出力ストリームを開ける
openFileOutputStream()メソッドが追加されました。
AddonManager.jsm
- アプリケーション起動中に変更が行われたアドオンの一覧を管理できるメソッドがアドオンマネージャに追加されました。
addStartupChange()、removeStartupChange()、getStartupChanges()の 3 つです。
XUL
tree要素で、datasources属性によって参照されたノードがすべてid属性で指定された固有 ID を持っていた場合、3 種類の公開状態を記憶できるようになりました。panel要素で、新しいbackdrag属性を使って、ユーザーがバックグラウンドの任意の場所をクリックして、その要素をドラッグできるように 設定することが可能となりました。
XPCOM
Components.utils.schedulePreciseGC()メソッドが追加されました。これは、以後どこかの時点で JavaScript コードが何も実行されていないときに、完全なガベージコレクション処理を行う予定を入れられるものです。Components.utils.unload()メソッドが追加されました。これは、Components.utils.load()で読み込まれた JavaScript コードモジュールを破棄できるようにするものです。
ユーザー体験の変更
- 拡張機能のオプションが、再起動不要型と従来型のいずれでも アドオンマネージャ内に表示 されるようになりました。
- ダウンロードされたファイルの保存先がサイトごとに記憶されるようになりました。このデータは DownloadLastDir.jsm を使ってアクセスできます。
ビルドシステムの変更
- ActiveX 組み込み API はビルドされなくなり、ビルドシステムでのサポートも削除されました。関連インターフェイスも削除されました。下記 削除されたインターフェイス を参照してください。
- Windows でのビルド時に
-Zc:wchar_t-を指定できなくなりました。詳しくは、更新された ビルド手順 をご覧ください。
インターフェイスの変更
nsISocketTransportに新しい接続フラグDISABLE_IPV6が追加されました。これは、利用可能な IPv6 アドレスがあってもそれを無視して、IPv4 アドレスのみに接続するようソケットを設定するものです。また、nsIDNSServiceに新しい解決フラグRESOLVE_DISABLE_IPV6が追加されました。これは、利用可能な IPv6 アドレスがあってもそれを無視して、IPv4 ホストのみを考慮してドメイン名解決を行うものです。これらの変更は、IPv4 と IPv6 の両方に対応している (その中でも特に IPv6 接続がうまくいかない) ホストへ接続する際の応答時間を短縮する 「幸せな目玉」戦略 を実装するために使われます。inIDOMUtilsに 2 つのメソッドが追加されました。あるノードの子ノード一覧を返すgetChildrenForNode()と、選択範囲内で使用されているフォントフェイス一覧を返すgetUsedFontFaces()です。nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCHインターフェイスはnsIMarkupDocumentViewerインターフェイスへ統合されました。nsIDOMWindow2インターフェイスはnsIDOMWindowインターフェイスへ統合されました。nsIDOMWindow_2_0_BRANCHインターフェイスはnsIDOMWindowInternalインターフェイスへ統合されました。- URI 引数付きで
nsINavHistoryObserverメソッドを使う場合、GUID も必要となります。 nsISHistory_2_0_BRANCHインターフェイスはnsISHistoryインターフェイスへ統合されました。nsITelemetryに、ID からヒストグラムを返すgetHistogramById()メソッドと、false設定時に 使用統計情報 (Telemetry) の記録を無効化できるcanRecord属性が追加されました。使用統計情報はプライベートブラウジングモードでは記録されなくなりました。(Firefox バグ 661574、Firefox バグ 661573)newHistogram()で定義された使用統計ヒストグラムは、Mozilla への定期報告に含まれません。nsIMemoryReporterインターフェイスに大幅な変更が行われました。使用する場合はコードに変更を加える必要があるでしょう。nsIXMLHttpRequest.setRequestHeader()によって設定されたヘッダーが、リダイレクトを辿る際にもリクエストに含まれて送信されるようになりました。これまでこの方法で設定されたヘッダーは送信されていませんでした。nsIDocShellにallowWindowControl属性が追加されました。trueを設定すると、docshell のコンテンツがウィンドウをコントロールできるようになります (ウィンドウの移動やサイズ変更など)。nsIThreadInternal2インターフェイスはnsIThreadInternalインターフェイスへ統合されました。
新しいインターフェイス
nsIDOMFontFace-
ひとつのフォントフェイスを表します。
nsIDOMFontFaceList-
nsIDOMFontFaceで表されたフォントフェイスの一覧を表します。
削除されたインターフェイス
以下のインターフェイスは、不要となり削除された実装です。
nsIDOM3AttrnsIDOM3NodensIDOM3TypeInfonsIDOM3TextnsIDOMDocumentStylensIDOMNSDocumentnsIDOMNSFeatureFactorynsIDOMNSHTMLDocumentnsIDOMNSHTMLFormElementnsIDOMNSHTMLHRElementnsIDOMNSHTMLTextAreaElement
以下のインターフェイスは、ActiveX 組み込み API 廃止の一環として削除されました。
DITestScriptHelperDWebBrowserEventsDWebBrowserEvents2IDispatchIMozControlBridgeIMozPluginHostCtrlIWebBrowserIWebBrowser2IWebBrowserAppIXMLDocumentIXMLElementIXMLElementCollectionIXMLErrornsIActiveXSecurityPolicynsIDispatchSupportnsIMozAxPluginnsIScriptEventHandlernsIScriptEventManager