Firefox 7 for developers

Firefox 7 は 2011 年 9 月 27 日にリリースされました。このページは Firefox 7 のリリースにあたり、開発者に関係する変更についてまとめたものです。

ウェブ開発者向けの変更点一覧

HTML

  • HTMLHeadElementprofile プロパティが削除されました。このプロパティは Gecko 2.0 から非推奨となっていました。
  • HTMLImageElementx プロパティと y プロパティが削除されました。
  • HTMLSelectElementadd() メソッドの before 引数が optional となりました。
  • <body>background 属性が URI として解決されなくなりました。この変更は HTML 仕様への準拠によるものです。
  • <option>label 属性が指定されていない場合、要素の内容テキストを反映するようになりました。

Canvas

  • setTransform(), bezierCurveTo(), arcTo() に不正な値を与え呼び出したとき、例外が投げられなくなりました。これらは無視されます。
  • isPointInPath() (en-US) メソッドに与えられた点と現在のパスを比較するにあたり、変換マトリクスを適切に考慮するようになりました。
  • strokeRect() メソッドが幅 0 高さ 0 で呼び出された場合、何もしなくなりました。
  • drawImage() (en-US) メソッドが幅 0 もしくは高さ 0 で呼び出された場合、<canvas>INVALID_STATE_ERR を投げるようになりました。
  • drawImage() (en-US) メソッドが非定形の座標で呼び出された場合に、例外が投げられなくなりました。
  • toDataURL() が JPEG の品質を制御する引数を受け付けるようになりました。
  • globalCompositeOperation の値から、非標準だった clearover が削除されました。
  • source-over 合成処理の場合にのみ描画されるようになりました。
  • Canvas の塗りつぶし方を設定する mozFillRule (en-US) アトリビュートが追加されました。

CSS

MathML

  • XLink href が復活し、また MathML3 の href 属性もサポートされました。リンクには後者の属性を使うことが望まれます。
  • <mpadded> (en-US) 要素に voffset 属性のサポートが追加されました。また lspace 属性の挙動も修正されました。
  • トップレベル要素である <math> 要素が <mstyle> (en-US) 要素のもつ属性すべてを受け入れるようになりました。
  • Asana Math フォントのサポートが追加されました。
  • <mfrac> 要素によって表される分数の線の太さ medium が修正され、規定の太さになりました。
  • 負のスペースを表すキーワード (en-US) がサポートされました。

DOM

  • File インターフェイスの非標準なメソッド getAsBinary(), getAsDataURL(), getAsText() が削除されました。あわせて、非標準なプロパティ fileNamefileSizeも削除されました。
  • Blob によってデータが指定され、また Content-Disposition HTTP ヘッダが送信されたとき、FormData (en-US) インターフェイスはファイル名を空文字列として報告しないようになりました。これによって幾つかのサーバに起こっていたエラーが解消されます。
  • element.dir 属性が結果を常に小文字で返すようになりました。これは HTML 仕様の要件によるものです。
  • FileReaderreadAsArrayBuffer() メソッドが実装されました。
  • document.createEntityReference が削除されました。このメソッドは適切に実装されておらず、他のブラウザーのほとんどで実装されていませんでした。
  • document.normalizeDocument が削除されました。今後は Node.normalize を利用してください。
  • index が範囲外の場合、DOMTokenList.itemundefined を返すようになりました。これまでは null を返していました。
  • Node.getFeature が削除されました。
  • HTMLInsElement インターフェイスと HTMLDelElement インターフェイスが削除されました。これは <ins><del> 要素が実際には HTMLModElement を使用していたためです。
  • 新しい DOM4 仕様にある AttrNode を継承しない (DOM Core 1, 2, 3 まではしていた) という定義に準拠するため、Attr インターフェイス上の Node プロパティやメソッドについて、将来的にこれらを削除するといった意味の 警告を出す (en-US) ようになりました。
  • Window オブジェクトに window.ondeviceorientation (en-US) プロパティと window.ondevicemotion プロパティのサポートを追加しました。
  • window.resizeTowindow.resizeBywindow.moveTowindow.moveBy はメインウィンドウに適用されなくなりました。

JavaScript

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

XML

  • XSLT スタイルシートはこれまでサポートされていた text/xsl に加えて、正式な MIMEapplication/xslt+xml も利用可能になりました。(スタイルシート処理命令もしくは HTTP Link ヘッダで利用できます。)

Mozilla 開発者とアドオン開発者向けの変更点

これらの変更は、アドオン開発者と、Mozilla 本体のコードに関わっている開発者の双方に影響するものです。アドオン開発者は アドオンの Firefox 7 対応 に書かれている追加情報も参照してください。

メモ: Firefox 7 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは バイナリインターフェイス をご覧ください。

JavaScript コードモジュール

FileUtils.jsm

  • 書き込みのための、安全でない状態のファイル出力ストリームを開ける openFileOutputStream() メソッドが追加されました。

AddonManager.jsm

XUL

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 バグ 661574Firefox バグ 661573) newHistogram() で定義された使用統計ヒストグラムは、Mozilla への定期報告に含まれません。
  • nsIMemoryReporter インターフェイスに大幅な変更が行われました。使用する場合はコードに変更を加える必要があるでしょう。
  • nsIXMLHttpRequest.setRequestHeader() によって設定されたヘッダが、リダイレクトを辿る際にもリクエストに含まれて送信されるようになりました。これまでこの方法で設定されたヘッダは送信されていませんでした。
  • nsIDocShellallowWindowControl 属性が追加されました。true を設定すると、docshell のコンテンツがウィンドウをコントロールできるようになります (ウィンドウの移動やサイズ変更など)。
  • nsIThreadInternal2 インターフェイスは nsIThreadInternal インターフェイスへ統合されました。

新しいインターフェイス

nsIDOMFontFace

ひとつのフォントフェイスを表します。

nsIDOMFontFaceList

nsIDOMFontFace で表されたフォントフェイスの一覧を表します。

削除されたインターフェイス

以下のインターフェイスは、不要となり削除された実装です。

  • nsIDOM3Attr
  • nsIDOM3Node
  • nsIDOM3TypeInfo
  • nsIDOM3Text
  • nsIDOMDocumentStyle
  • nsIDOMNSDocument
  • nsIDOMNSFeatureFactory
  • nsIDOMNSHTMLDocument
  • nsIDOMNSHTMLFormElement
  • nsIDOMNSHTMLHRElement
  • nsIDOMNSHTMLTextAreaElement

以下のインターフェイスは、ActiveX 組み込み API 廃止の一環として削除されました。

  • DITestScriptHelper
  • DWebBrowserEvents
  • DWebBrowserEvents2
  • IDispatch
  • IMozControlBridge
  • IMozPluginHostCtrl
  • IWebBrowser
  • IWebBrowser2
  • IWebBrowserApp
  • IXMLDocument
  • IXMLElement
  • IXMLElementCollection
  • IXMLError
  • nsIActiveXSecurityPolicy
  • nsIDispatchSupport
  • nsIMozAxPlugin
  • nsIScriptEventHandler
  • nsIScriptEventManager

参考