Firefox 50 for developers
=========================

Firefox の最新の開発者向け機能を試すには、Firefox Developer Edition をインストールしてください。Firefox 50 は、米国時間 2016 年 11 月 15 日にリリースされました。このページでは、開発者に影響する Firefox 50 の変更点をまとめています。

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

### HTML

* `<bdo>` の既定のスタイルで、`unicode-bidi` の値が `isolate-override` になりました (Firefox バグ 1249497)。
* `<track>` 要素の `src` 属性の設定が正しく動作するようになりました (Firefox バグ 1281418)。
* `<area>`、`<a>`、`<img>`、`<iframe>`、`<link>` 要素の `referrerpolicy` 属性を、デフォルトで有効化しました (Firefox バグ 1223838、Firefox バグ 1264165)。
### CSS

* dashed および dotted スタイルのボーダーに border-radius を設定したとき、角の部分を solid スタイルではなく指定したスタイルで描画するようになりました (Firefox バグ 382721)。
* 非標準の `:-moz-full-screen-ancestor` 疑似クラスセレクターを削除しました (Firefox バグ 1199529)。
* 仕様書から削除されたため、および実装していた主要ブラウザーが Firefox だけであったため、`box-sizing``: padding-box` を削除しました (Firefox バグ 1166728)。
* `unicode-bidi` プロパティの値 `isolate`、`isolate-override`、`plaintext` の接頭辞を削除しました (Firefox バグ 1141895)。
* Quirk モードでリストのビュレットが、標準準拠モードと同様にリストのサイズを継承するようになりました (Firefox バグ 648331)。
* `:in-range` および `:out-of-range` 疑似クラスが、無効状態または読み取り専用の input に一致しないように動作を変更しました (Firefox バグ 1264157)。
* `:any-link` 擬似クラスの接頭辞を削除しました (Firefox バグ 843579)。
* `border-image-repeat` で、値 `space` を実装しました (Firefox バグ 720531)。
### JavaScript

* ES2015 の `Symbol.hasInstance` プロパティを実装しました (Firefox バグ 1054906)。
* ES2017 の `Object.getOwnPropertyDescriptors()` メソッドを実装しました (Firefox バグ 1245024)。
* Unicode および ignoreCase フラグを使用する `RegExp` の、\W の動作を最新の仕様草案に合わせて変更しました。K、S、k、s、KELVIN SIGN (U+212A)、LATIN SMALL LETTER LONG S (U+017F) に一致しないようになりました (Firefox バグ 1281739)。
### 開発者ツール

* ウェブコンソールがソースマップを理解するようになりました。
* ストレージインスペクターで、IndexedDB のオブジェクトストアから個々のアイテムを削除できるようになりました。
* メモリーツールをデフォルトで有効化しました。
* ボックスモデルビューを計算済みビューに移動しました。
* ウェブコンソールで、XHR や Fetch() によるネットワークリクエストのスタックトレースを表示します。

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

### HTTP

* 実験的 (および非推奨) な SPDY 3.1 をデフォルトで無効にしました (Firefox バグ 1287132)。
* `X-Content-Type-Options` をサポートしました (Firefox バグ 471020)。
* cookie の `__Host-` および `__Secure-` 接頭辞を実装しました。`Set-Cookie` および Firefox バグ 1283368 をご覧ください。
* `Referrer-Policy` ヘッダーを実装しました (Firefox バグ 1264164)。
### セキュリティ

* `<a>` 要素の `ping` 属性が、`connect-src` CSP 1.1 ポリシーディレクティブに従うようになりました (Firefox バグ 1100181)。
* `sandbox` CSP ディレクティブをサポートしました (Firefox バグ 671389)。
* workers に content security policy を設定する ことが可能になりました (Firefox バグ 959388)。
* Content Security Policy の制限によりビーコンデータを送信できなかったとき、`Navigator.sendBeacon()` メソッドで例外が発生しないようになりました。代わりに、想定どおり `false` を返します (Firefox バグ 1234813)。
* RC4 暗号のサポートは Firefox 36 から非推奨にしており、Firefox 44 では既定で無効にしました。1 年間の猶予期間が終了しましたので、Firefox 50 で RC4 のサポートを全面的に廃止しました (Google Chrome は 2016 年 8 月に RC4 のサポートを廃止しました)。今後、Firefox は RC4 暗号に出くわすと常に `SSL_ERROR_NO_CYPHER_OVERLAP` エラーが発生します。
### ネットワーク

* 非同期 `XMLHttpRequest` でエラーが発生したとき、`XMLHttpRequest.getAllResponseHeaders()` メソッドが空文字列を返すようになりました (Firefox バグ 1286744)。
* CORS または他のネットワークの制約により失敗した非同期 `XMLHttpRequest` は `NetworkError` を返すのではなく、他のエラーと同様にキャッチ可能な `error` が発生するようになりました (Firefox バグ 709991)。
* `XMLHttpRequest.getResponseHeader()` および `XMLHttpRequest.getAllResponseHeaders()` が、デフォルトで空のヘッダーを返すようになりました。これは設定項目 `network.http.keep_empty_response_headers_as_empty_string` で制御しています (Firefox バグ 918721)。
* `Request.cache` に `only-if-cached` オプションを追加しました (Firefox バグ 1272436)。
### DOM

* `EventTarget.addEventListener()` の `once` オプションをサポートしました (Firefox バグ 1287706)。
* `NodeList` インターフェイスがイテレート可能になり、`forEach()`、`values()`、`NodeList.entries()`、`NodeList.keys()` の各メソッドが使用可能になりました (Firefox バグ 1290636)。
* `DOMTokenList` インターフェイスがイテレート可能になり、`forEach()`、`values()`、`DOMTokenList.entries()`、`DOMTokenList.keys()` の各メソッドが使用可能になりました (Firefox バグ 1290636)。
* `Document.createElement()` および `Document.createElementNS()` メソッドで、カスタム要素を作成するための省略可能な引数 `options` を追加しました (Firefox バグ 1276579)。
### SVG

* `allowReorder` 属性を廃止して、この属性に設定されていた動作を SVG `<switch>` 要素の既定の動作にしました (Firefox バグ 1279690)。
* 最新の SVG2 仕様に従って、SVG `<image>` 要素の `preserveAspectRatio (en-US)` 属性のキーワード `defer` を削除しました (Firefox バグ 1280425)。
### ドラッグ & ドロップ API

* HTML Drag and Drop API を使用してドラッグアンドドロップしている複数のアイテムにアクセスできる、`DataTransfer.items` プロパティを実装しました。これを可能にするため、`DataTransferItem` および `DataTransferItemList` インターフェイスもサポートしました(Firefox バグ 906420)。これはデフォルトで有効です。
* 古く廃止済みである、Firefox 固有のドラッグ & ドロップ API イベント `dragdrop` および `draggesture` のサポートを廃止しました。これらを使用し続けているコードは、 HTML ドラッグ & ドロップ API を使用するように更新してください (Firefox バグ 1162050。
### ポインターロック API

* ポインターロック API の接頭辞を削除しました (Firefox バグ 991899)。
* Firefox 50 より前のバージョンではドアハンガーを使用して `requestPointerLock()` を許可するかを問い合わせており、ユーザーが許可するまでポインターロックを有効化しませんでした。Firefox 50 より、ポインターロックは 全画面 API と同様に即座に許可されますが、終了方法をユーザーに説明する通知を表示します (Firefox バグ 1273351)。
### IndexedDB

* `close` イベントが、 `IDBDatabase` オブジェクトで対応するデータベースが意図せず閉じられたときに、送信されるようになりました (Firefox バグ 1151017)。
### Service Workers

* `WindowClient.navigate()` メソッドを実装しました。このメソッドで、Service Worker で制御されているクライアントウィンドウに、指定した URL を開くことができます (Firefox バグ 1218148)。
### WebGL

* `EXT_shader_texture_lod` (en-US) WebGL 拡張を実装しました (Firefox バグ 1111689)。
* PBO (`PIXEL_UNPACK_BUFFER`) を実装するため、WebGL 2 (en-US) 向けに texImage 関係のメソッドを更新しました (Firefox バグ 1280499)。
### WebRTC

* `MediaStream` にトラックを追加すると、仕様書で示されているように `addtrack` イベントが発生するようになりました。このイベントは `MediaStreamTrackEvent` (en-US) タイプであり、トラックが追加されたストリームで発生します。`"addtrack"` イベントを扱うために、`MediaStream.addEventListener('addtrack', ...)` または `onaddtrack` プロパティを使用できます。
* `MediaStreamTrack` インターフェイスが、 `ended` イベントおよびそのイベントハンドラーをサポートしました。
* Firefox で `MediaStreamTrack.readyState` プロパティをサポートしました。これは、トラックが生存中であるか永久に終了した状態であるかを示します。
* `MediaStreamTrack` の `getConstraints()` (en-US) および `getSettings()` (en-US) メソッドを実装しました。それぞれ、カスタマイズしたプロパティ制約で直近に適用された値のセットを取得する、およびトラックで制限可能なすべてのプロパティの実際の値を取得するメソッドです。付随するデータ型もドキュメントに記載しています。
* `RTCDataChannel.stream` (en-US) プロパティを削除しました。これは Firefox 24 で `RTCDataChannel.id` (en-US) に置き換えられましたが、後方互換性のためにサポートしていました。まだ `id` プロパティを使用するようにコードを更新していない場合は、必ず更新してください。
### ウェブオーディオ API

* `PannerNode` インターフェイスで、オーディオソースの位置 (`PannerNode.positionX` (en-US)、`PannerNode.positionY` (en-US)、`PannerNode.positionZ` (en-US)) や方向性 (`PannerNode.orientationX`、`PannerNode.orientationY` (en-US)、`PannerNode.orientationZ` (en-US)) に関する 3D 直交座標系のプロパティをサポートしました。
* 一般的な 無限インパルス応答 (IIR) フィルターを生成する、`IIRFilterNode` インターフェイスを実装しました。
* `setInterval()` および `setTimeout()` で作成したタイマーをバッググラウンドのタブで抑制する機能は、ウェブオーディオ API の `AudioContext` がアクティブで音声を再生しているときに実施しないようになりました。これは、タイミングに敏感な音声再生 (タイマーを使用して個々の音を生成する音楽プレイヤーなど) をバックグラウンドで行う際の問題を避ける助けになります (Firefox バグ 1181073)。
### Audio/Video

* `AlignSetting` 列挙型 (`VTTCue.align` で使用可能な値を表す) が以前、誤って `"center"` ではなく `"middle"` を含んでいました。この問題を修正しました (Firefox バグ 1276130)。
* 非標準かつ実験的な `HTMLMediaElement.seekToNextFrame()` メソッドが、メディア内の次のフレームを同期的ではなく非同期的にシークするようになりました。また、シークが完了すると fulfill になる `Promise` を返します。
* `HTMLTrackElement` の実装を、ドキュメント内にない場合でも `<track>` 要素がリソースを読み込めるように修正しました (Firefox バグ 871747)。
### バッテリー API

* Firefox 43 から非推奨にしていた `navigator.battery` プロパティを廃止および削除しました。代わりに、バッテリーの `Promise` を取得する `navigator.getBattery()` メソッドを使用してください。これは `BatteryManager` (en-US) が使用可能になったときに完了します。`BatteryManager` (en-US) は、promise が成功した場合のハンドラに渡されます (Firefox バグ 12593355)。
### ファイルとディレクトリー

* 以前は Google Chrome との互換性しか有していなかったサイトとの互換性を向上するため、ファイルとディレクトリー項目 API のサブセットを実装しました (Firefox バグ 1265767)。
    + 非同期 API インターフェイスを実装しましたが、ファイルの読み取りしかサポートしませんので注意してください。例えば `FileSystemFileEntry.createWriter()` メソッドは何も行いません。
    + 以下のインターフェイスを実装しました:
        - `FileSystem`
        - `FileSystemEntry` (en-US) (プロパティのみ。メソッドは未実装)
        - `FileSystemFileEntry` (`createWriter()` を除く)
        - `FileSystemDirectoryEntry` (`removeRecursively()` (en-US) を除く)
        - `FileSystemDirectoryReader` (en-US)
    + `<input>` 要素の `webkitdirectory` 属性および `HTMLInputElement.webkitdirectory` を実装しました。ファイルではなくディレクトリーを受け入れるように、file 型の input を設定できます (Firefox バグ 1258489)。
    + `HTMLInputElement.webkitEntries` を実装しました。これは、選択されたアイテムを表す `FileSystemEntry` (en-US) ベースのオブジェクトの配列を返します。
    + `File.webkitRelativePath` を実装しました。これは、`HTMLInputElement.webkitGetEntries()` が返すリスト内のアイテムのひとつである `FileSystemDirectoryEntry` に含まれているルートに対して相対的な、ファイルのパスを持ちます。
    + この API で何をサポートしているかについて、詳しくは Firefox におけるファイルとディレクトリー項目 API をご覧ください。
    + これらの API はデフォルトで有効です。一部の API は以前から使用できましたが、設定で無効化されていました (Firefox バグ 1288683)。
* ファイルとディレクトリー項目 API の一部として、`DataTransferItem.webkitGetAsEntry()` を実装しました。これは、ドロップされたファイルを表す `FileSystemEntry` (en-US) を取得できます (Firefox バグ 1289255)。これはデフォルトで有効です。
* ディレクトリーアップロード API 提案の一部である `HTMLInputElement.directory` プロパティを `allowdirs` に改名しました (Firefox バグ 1288681)。このプロパティは設定で無効化しています。
過去のバージョン
--------

* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* 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