Firefox 42 for developers
=========================

Firefox の最新の開発者向け機能をテストするには、 Firefox Developer Edition をインストールしてください Firefox 42 は、米国時間 2015 年 11 月 3 日にリリースされました。この記事では、ウェブ開発者だけでなく、 Firefox や Gecko の開発者やアドオン開発者にとっても有益な主な変更点を紹介します。

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

### 開発者ツール

ハイライト:

* Wi-Fi 経由で Android 版 Firefox のデバッグを行う
* *WebIDE で Firefox OS シミュレーターの設定を行う*
* CSS filter のプリセット

Firefox 41 から Firefox 42 の間に解決した開発ツール関連のバグ一覧。

### CSS

* rtl 表記の文字で、`writing-mode` の縦書きをサポートしました (Firefox バグ 1131451)。
* `caption-side` の値はテーブルに対して相対的になり、また`writing-mode` の値に従って実際の意味が変わります (Firefox バグ 1202993)。
* `-moz-margin-start` などの非標準プロパティが、対になる標準プロパティ (`margin-inline-start` など) のエイリアスになりました。以前は逆になっていました。これは `CSSStyleDeclaration.cssText` が返す値やスタイルルール内のプロパティに対するイテレーションに対して影響があり、どちらも標準的な形式を使用します (Firefox バグ 1118103)。
* 接頭辞付きの CSS グラデーションは、設定項目 `layout.css.prefixes.gradients` を `false` にすることで無効化できるようになりました。
* `float` とマージンの相殺の動作に関する古くからのバグを、いくつか修正しました (Firefox バグ 478834, Firefox バグ 538194, and Firefox バグ 451791)。
### HTML

* `<img>` (Firefox バグ 1166910)、`<iframe>` (Firefox バグ 1175736)、`<a>` および `<area>` (Firefox バグ 1174913) 要素の `referrer` 属性を実験的にサポートしました。`network.http.enablePerElementReferrer` の既定値が `false` であるため、デフォルトでは効力がありません。
### JavaScript

* `Reflect` オブジェクトを実装しました (Firefox バグ 987514)。
* `Proxy` `handler.ownKeys()` トラップの実装を、ES2015 の確定仕様に準拠するよう更新しました (Firefox バグ 1049662)。
* `new` を伴わずに `Map`、`Set`、`WeakMap` を呼び出すと `TypeError` が発生するようになりました (Firefox バグ 1083752)。
### インターフェイス/API/DOM

#### DOM & HTML DOM

* `id` を伴う画像が、`Window` インターフェイスのプロパティのリストに入らないようになりました。`<img id="login">` は `window.login` としてアクセスできません。この動作は Firefox 26 で導入しており、その後変更された仕様書に合致させるために削除しました (Firefox バグ 959992)。
* `MouseEvent.offsetX` および `MouseEvent.offsetY` を追加しました (Firefox バグ 69787)。
* `HTMLInputElement` インターフェイスを、ディレクトリのアップロードを扱うよう実験的に拡張しました (Firefox バグ 1164310)。以下 4 つのメンバーは、設定項目 `dom.input.dirpicker` を `true` に設定すると使用できます。
    + `HTMLInputElement.directory`
    + `HTMLInputElement.isFilesAndDirectoriesSupported`
    + `HTMLInputElement.getFilesAndDirectories()`
    + `HTMLInputElement.chooseDirectory()`
* `Directory` インターフェイスを実験的に拡張しました (Firefox バグ 1177688)。`Directory.path` および `Directory.getContents` の 2 つのメンバーは、設定項目 `dom.input.dirpicker` を `true` に設定すると使用できます。
* `HTMLMediaElement.mozSrcObject` を `HTMLMediaElement.srcObject` に改名しました (Firefox バグ 1175523)。

#### Service Worker

* `Request.context` を削除しました (Firefox バグ 1188062)。
* デスクトップ版 Firefox でプッシュ API をデフォルトで有効にしました (Firefox バグ 1153499) が、Nightly/Dev Edition/Beta チャンネルのみで有効です。コンシューマーの UX およびデバッグ機能が適切に実装されるまで、Release チャンネルではデフォルトで無効化しています (Firefox バグ 1207875)。なお、 `about:config` の設定項目 `dom.push.enabled` で有効化できます。
* `PushManager.hasPermission()` メソッドが仕様書で非推奨になり、`PushManager.permissionState()` メソッドに置き換えられました。Firefox でこれを反映するように、実装を更新しました (Firefox バグ 1183853)。
* Notifications API で、Service Worker に関する追加実装を行いました (Firefox バグ 1114554)。ただし、Release 版では無効化しています。

#### ウェブアニメーション API

ウェブアニメーション API の実験的な実装で、サポート範囲が広がりました:

* `AnimationPlayer.playbackRate` (en-US) プロパティ (Firefox バグ 1127380)。
* `CSSAnimation` (en-US) and `CSSTransition` (en-US) インターフェイス (Firefox バグ 1178186)。
* `Animation.reverse()` メソッド (Firefox バグ 1150808)。
* `AnimationPlaybackEvent` インターフェイスを実装して、`Animation` で `cancel` および `finish` イベントが発生するようになりました (Firefox バグ 1178664)。

#### Web Components

シャドウ DOM の実験的な実装を変更しました。

* `ShadowRoot` で `Node.cloneNode()` を実行しようとすると、`DataCloneError` 例外が発生します (Firefox バグ 1176757)。
* `ShadowRoot` を引数として `Document.importNode()` を実行すると、`NotSupportedError` の `DOMException` が発生します (Firefox バグ 1177914)。
* `ShadowRoot` を引数として `Document.adoptNode()` を実行すると、`HierarchyRequestError` の `DOMException` が発生します (Firefox バグ 1177991)。

#### WebGL

* WebGL2 の `WebGLTransformFeedback` (en-US) を実装しました (Firefox バグ 1048724)。
* WebGL2 のコンテキストを得るため、`HTMLCanvasElement.getContext()` は以前の `experimental-webgl2` に代わり `webgl2` を使用するようになりました (Firefox バグ 1187174)。

#### WebRTC

* `RTCPeerConnection.createOffer()` (en-US) のオプションデータ型である `RTCOfferOptions` が、より仕様に近くなるように更新されました。他の変更点としては、 `voiceActivityDetection` オプションを提供する `RTCOfferAnswerOptions` 辞書をベースにしたことです。
* `RTCAnswerOptions` 辞書が追加されました。これは、 `createAnswer()` (en-US) の `options` 引数に使用される型です。
* `RTCICECandidatePairStats.mozPriority` を `RTCICECandidatePairStats.priority` (en-US) に改名しました (Firefox バグ 1184426)。

#### 新規 API

* `ImageBitmap` インターフェイスおよび `createImageBitmap()` メソッドを実装しました。これらは通常の window スクリプトおよびウェブワーカーで有効であり、window やワーカーのコンテキスト間で効率よく画像を渡すことができます (Firefox バグ 1044102)。

#### その他

* `IDBCursorWithValue` インターフェイスがウェブワーカーで使用可能になりました (Firefox バグ 1188115)。
* ウェブワーカーが発したエラーイベントがバブリングしないようになりました (Firefox バグ 1188141)。
* Media Source Extensions (MSE) がホワイトリストに記載されたサイトだけでなく、すべての Web サイトで有効になりました (Firefox バグ 1185611)。
* 非標準かつ非推奨である `Window.mozRequestAnimationFrame()` を削除しました (Firefox バグ 909154)。代わりに、標準の `Window.requestAnimationFrame()` を使用してください。
* 音声合成 (text-to-speech) を Windows 向けのデスクトップ版 Firefox に実装しました。ただし、`about:config` の `media.webspeech.synth.enabled` フラグで無効化しています (Firefox バグ 1003457)。詳しくはウェブ音声 API をご覧ください。
### MathML

*変更なし。*

### SVG

*変更なし。*

### Audio/Video

*変更なし。*

HTTP
----

* Firefox 41 まで、HTTP/2 レスポンスに含まれる未定義または無効な疑似ヘッダフィールドを、誤って受け入れていました。これが修正され、Firefox 42 より受け入れる疑似ヘッダフィールドは仕様書に従い *:status* のみになります。独自のフィールドを含むレスポンスヘッダは、異常なものであると判断します (Firefox バグ 1136727)。
ネットワーク
------

* CSP の `upgrade-insecure-requests` ディレクティブを実装しました (Firefox バグ 1139297)。
セキュリティ
------

* 有効期間が 39 か月を超える EV 証明書は、DV 証明書として判断および取り扱われるようになりました (Firefox バグ 1145679)。
アドオン開発者と Mozilla 開発者向けの変更点
--------------------------

### インターフェイス

#### nsIContentPolicy

* Gecko 内部やアドオンのコードがさまざまなタイプの要求をより区別できるようにするため、`TYPE_EMBED` 定数を `nsIContentPolicy` に追加しました。以前はこのような場合に、`TYPE_OBJECT` を使用していました (Firefox バグ 1148030)。
* 同様に、`TYPE_SUBDOCUMENT` 定数を `TYPE_FRAME` および `TYPE_IFRAME` に分割しました (Firefox バグ 1148044)。
### XUL

*変更なし。*

### JavaScript コードモジュール

*変更なし。*

### XPCOM

*変更なし。*

### その他

*変更なし。*

過去のバージョン
--------

* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers