Firefox 5 for developers

Firefox 5 は Gecko 5.0 ベースのブラウザーで、2011 年 6 月 21 日にリリースされました。このページは Firefox 5 のリリースにあたり、開発者に影響する変更について情報をまとめたものです。

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

HTML

Canvas の修正

  • <canvas> 2D コンテキストの createImageData() メソッドに ImageData オブジェクト指定できるようになりました。このメソッドは指定したオブジェクトと同じ大きさの 新しい ImageData オブジェクトを作成 しますが、すべてのピクセルが透明な黒で描画されます。これは実装されたと書かれていたのですが、そうではありませんでした。
  • CanvasGradientaddColorStop() メソッドの呼び出しで非有限なカラーストップが指定された際、INDEX_SIZE_ERR が適切に投げられるようになりました (これまでは SYNTAX_ERR が投げられていました)。
  • HTMLCanvasElementtoDataURL() メソッド実装が修正され、指定した MIME 型をマッチングの前に小文字に変換するようになりました。
  • getImageData() が修正され、canvas の境界を超えた矩形を受け入れるようになりました。canvas 外にあるピクセルは透明な黒として返されます。
  • drawImage()createImageData() が仕様に準拠し、負の引数を処理するようになりました。この処理は、適切な軸にそって矩形を反転させます。We need an article about CSS sizing and how this works.
  • createImageData() の呼び出しで非有限な値が指定された際、NOT_SUPPORTED_ERR が適切に投げられるようになりました。
  • 1px より小さな矩形が指定された際、createImageData()getImageData() は適切に 1px 相当の ImageData を返すようになりました。
  • createRadialGradient() の半径に負の値を指定した際、INDEX_SIZE_ERR が適切に投げられるようになりました。
  • createPattern()drawImage() の呼び出しで、画像に nullundefined が指定された際、TYPE_MISMATCH_ERR が適切に投げられるようになりました。
  • globalAlpha に不正な値が指定されても SYNTAX_ERR が投げられないようになりました。このような場合は適切にただ無視されます。
  • translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo(), arc() に不正な値が指定されても例外が投げられないようになりました。このような場合は適切にただ無視されます。
  • shadowOffsetX, shadowOffsetY, shadowBlur に不正な値が指定された際、それらはただ無視されるようになりました。
  • rotate, scale に不正な値が指定された際、それらはただ無視されるようになりました。

CSS

CSS Animations

CSS Animations がサポートされました。-moz- 接頭辞をつければ利用可能です。

DOM

  • selection オブジェクトの modify() メソッドが変更され、単語の選択で単語の後にある空白を含まなくなりました。この変更はプラットフォームごとの一貫性を向上させ、また WebKit の挙動とも一致します。
  • アクティブでないタブにおいて window.setTimeout() メソッドのタイムアウトが 1 秒に 1 回 を超えないようになりました。また、入れ子のタイムアウトが HTML5 仕様で定められた最小値 4ms になりました (これまでは 10ms でした)。
  • 上記と同様に、アクティブでないタブにおける window.setInterval() も 1 秒に 1 回以下になりました。
  • XMLHttpRequestloadend イベントをサポート for progress listeners. このイベントはすべての転送が終了した際 (つまり、abort, error, load イベントの後) に発生します。このイベントを利用すると、転送の成功・失敗に関わらず実行されるタスクを処理できます。
  • Blob オブジェクトと File オブジェクトの slice() メソッドが削除され、代わりに提案中のメソッドに置き換えられました。提案中のメソッドは JavaScript の Array.slice(), String.slice() メソッドにより近いものです。現時点では mozSlice() という名前がつけられています。
  • window.navigator.language の値が Accept-Language HTTP ヘッダー の値から決定されるようになりました。
  • DOM 仕様の要件により、Node.prefix プロパティが readonly になりました。

JavaScript

  • 正規表現を関数のように呼び出せなくなりました。この変更は WebKit チームと互換性の確保について話し合った結果行われたものです。(WebKit bug 28285 をお読みください。この機能は長いこと存在していたものの、少なくとも MDC ではドキュメント化されていませんでした。)
  • Function.prototype.isGenerator() メソッドがサポートされました。個のメソッドによってある関数が generator であるかを調べられます。
  • chrome コード内に生成された DOM 文書が sandbox 内のスクリプトに現れなくなりました。
  • 予約語 class, enum, export, extends, import, super はこれまで Strict Mode のみで予約されていましたが、Strict Mode ではない通常のモードでも予約語扱いになりました。
  • JSON パーサーが書き直され、スピードと準拠度が向上しました。この書き直しには Firefox バグ 572279 の修正も含まれています。

SVG

  • class SVG アトリビュートを動的に変化させられるようになりました。
  • SVGLengthList, SVGNumberList, SVGPathSegList, SVGPointList など、オブジェクトのリストを表す SVG DOM インターフェイスがインデックスされ、配列のようにアクセス可能となりました。加えて、リスト中の項目数を表す length も持ちます。

HTTP

  • Firefox は Keep-Alive HTTP ヘッダーを送信しないようになります。私たちはこのヘッダーを正しく整形していませんでした。また、ConnectionProxy-Connection ヘッダーに "keep-alive" を指定していたため重複しており、意味がなかったのです。
  • HTTP のトランザクションモデルを変更し、持続的接続プール内の接続を再利用するというより高度なものになりました。Necko はプールを FIFO と扱うのではなく、プール内の接続を congestion window (CWND) の大きい順に並べ替えます。Window のサイズ拡大を避けることで、多くのケースで HTTP トランザクションの確認応答時間 (RTT) を減少させることができるでしょう。
  • Firefox は Content-Disposition HTTP レスポンスヘッダーについて、filename, filename* パラメタがどちらも与えられている場合にそれらをより効果的に処理するようになりました。これは filename が先に与えられている場合でも filename* をまず調べすべての名前を読み取ることで実現しています。これまでは最初にマッチしたパラメタが使われており、後により適切な名前が与えられていた場合でもそれが使われなかったのです。詳細は Firefox バグ 588781 をお読みください。

MathML

開発者ツール

アドオン開発者向けの変更点一覧

すでに開発済みのアドオンを Firefox 5 向けにアップデートを行う方法については Firefox 5 へのアドオンのアップデート方法をご覧ください。

メモ: Firefox 5 は他のメジャーリリース版の Firefox と同様に、再コンパイルされたバイナリーコンポーネントが必要となります。詳しくはバイナリーインターフェイスをご覧ください。

JavaScript コードモジュールに対する変更点

新しい JavaScript コードモジュール

  • Dict.jsmコードモジュールが追加されました。このモジュールはキーと値のペアの辞書に対する API を提供します。

NetUtil.jsm

  • asyncFetch() メソッドは今回からnsIInputStream として入力ソースの特定をサポートします。

インターフェイスの変更点

  • nsIHttpChannelInternal インターフェイスはチャネルの端点のアドレスとポートの情報にアクセスする新しい属性を持っています。この情報は主にデバッグに用いることができます。
  • <canvas> エレメントの widthheight 属性は今回から符号付き整数から符合なし整数に変わり、IDL におけるリフレクトを行います(HTMLCanvasElement をご覧ください)。
  • nsIAppStartup2nsIAppStartup_MOZILLA_2_0 インターフェイスはnsIAppStartup インターフェイスに統合されました。
  • nsIDocShell_MOZILLA_2_0_BRANCH は nsIDocShell インターフェイスに統合されました。
  • nsIFocusManager_MOZILLA_2_0_BRANCH インターフェイスは nsIFocusManager インターフェイスに統合されました。
  • nsIHTMLEditor_MOZILLA_2_0_BRANCH インターフェイスは nsIHTMLEditor インターフェイスに統合されました。

新しいインターフェイス

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

次にあげるインターフェイスはもはや必要がないと判断されました。

デバッグの補助

  • 新しい DebugOnly<T> ヘルパーはデバッグモードにおけるビルドにおいてのみ変数の定義を可能にしました。

JavaScript API (SpiderMonkey)

  • jsdouble の値を C の符号付き整数型と符合なし整数型に変換するために JS_DoubleToInt32()JS_DoubleToUint32() が追加されました。

ビルドシステムの変更点

  • mozconfig ファイルがなくても Firefox をビルドできるようになり、 --enable-application setting が "browser" のデフォルトになりました。コードをダウンロード後、configure && make (or make -f client.mk) を行うだけで Firefox をビルドできます。

参考