Firefox 52 for developers
=========================

Firefox 52 は、米国時間 2017 年 3 月 7 日にリリースされました。このページでは、開発者に影響する Firefox 52 の変更点をまとめています。

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

### 開発者ツール

* UA の選択やネットワークの調整など、レスポンシブデザインモードを全面的に改良しました。
* アニメーションインスペクターで、タイミング関数を表示するようになりました。
* インスペクターに CSS グリッドの調査機能を搭載しました。
* about:debugging で Service Worker の状態を表示するようになりました。
* インスペクターで、選択した要素を簡単に強調表示できるようになりました。
* インスペクターで、ホワイトスペースのみのテキストノードを表示するようになりました。

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

### HTML

* `rel="noopener"` リンク種別 を実装しました (Firefox バグ 1222516)。
### CSS

#### 新機能

* `:focus-within` 擬似クラスを追加しました (Firefox バグ 1176997)。
* `<button>` 要素内で `display:flex/grid` および段組みレイアウトをサポートしました (Firefox バグ 984869)。
* 数値で表した色と currentcolor との間の補完処理を実装しました (Firefox バグ 1299741)。
* ``justify-content`: space-evenly` および ``align-content`: space-evenly` 向けに flexbox レイアウトを実装しました (Firefox バグ 1235922)。
* CSS `mask` / `clip-path` でサブピクセルアンチエイリアシングをサポートしました (Firefox バグ 1305259)。
* CSS Text 3 の、区分分断の変換規則を実装しました (Firefox バグ 1081858)。
* SVG コンテンツで、(`clip-path` プロパティで適用する) 基本的な図形のクリッピングをサポートしました (Firefox バグ 1246741)。
* `align-self`|`justify-self`: [ first | last ]? baseline 向けの Flexbox レイアウトを実装しました (Firefox バグ 1221524)。
* `touch-action` プロパティを、すべてのプラットフォームにおいてデフォルトで有効にしました。(詳しくは intent to ship mail #1 および intent to ship mail #2 をご覧ください)
* Flexbox の `align-content` の処理および単一ラインのサイズ調整が、ラインの数ではなく `flex-wrap` に依存するようになりました (Firefox バグ 1090031)。
* 補間処理ができないプロパティのアニメーションに CSS Animations を使用できるようになりました (Firefox バグ 1064937)。
* `baseline|last-baseline` を `[ first | last ]? baseline` に変更しました (Firefox バグ 1313254).
* block-axis について、`left`/`right` の使用値を `start` にしました (Firefox バグ 1221565)。
* 包含ブロックの長さが不定である、flexible tracks を伸長する際に、最小サイズや最大サイズを重視するようになりました (Firefox バグ 1309407)。
* `mask-position` および `mask-repeat` の初期値を、それぞれ `0% 0%` および `repeat` に変更しました (Firefox バグ 1308963)。
* CSS の `<color>` 値に対していくつか変更を施しました (Firefox バグ 1295456):
    + `rgba()` および `hsla()` を、`rgb()` および `hsl()` の別名として再定義しました。どちらも同じ引数構文を受け入れます。
    + `rgb(`) および `hsl()` が、アルファ値 (省略可能) を受け入れるようになりました。例: `rgb(255, 0, 0, 0.5)`
    + 色関数が、カンマ区切りではなく空白区切りの引数を受け入れるようになりました。例: `rgb(255 0 0 / 0.5)`
    + アルファ値を、数値だけでなくパーセンテージでも指定できるようになりました。例: `rgb(255 0 0 / 50%)`
    + `hsl()` 色の色相を、数値だけでなく角度でも指定できるようになりました。例: `hsl(120deg, 60%, 70%)`
* Firefox の子インデックス付き擬似クラス (`:nth-child`, `:first-child` など) の実装が CSS selectors level 4 仕様に合わせて更新されました。これらの擬似クラスは親要素の子ではなく、適切な兄弟要素に一致するようになりました。これにより、親要素がない場合や、親要素が `Element` でない場合にも、これらの擬似クラスを使用することができるようになりました (Firefox バグ 1300374.

#### CSS グリッド

* CSS グリッド を実装しました。

#### 変更および削除

* CSS3 マルチカラム関連プロパティの接頭辞を削除しました (また、`-moz` 接頭辞付きのプロパティを別名として再追加しました) (Firefox バグ 1300895)。
* 無名のフレックスアイテム内で、フレックスコンテナーの絶対配置の子を折り返さないようになりました (Firefox バグ 1269045)。
* グリッドコンテナーのベースラインを実装しました。 (Firefox バグ 1151204)。
* スタイルシステムから、`<flex>` 値を最小値として使用する箇所を削除しました (Firefox バグ 1305244)。
* 設定項目 `layout.css.masking.enabled` を削除しました (Firefox バグ 1308239)。
* 独自の `-moz-images-in-menus` および `-moz-images-in-buttons` メディア特性 を削除しました (Firefox バグ 1302157)。
* 色のプロパティから `-moz-use-text-color` を削除しました。代わりに `currentcolor` を使用してください (Firefox バグ 1306214)。
* [css-grid] グリッドアイテムに 'max-width' を設定するとテキストがはみ出す問題を修正しました (Firefox バグ 1330380)。
### JavaScript

#### 新機能

* async functions をサポートしました。`async function`、`async function expression`、`await` キーワードを追加しました (Firefox バグ 1185106)。
* 関数に対して、ES2017 の trailing commas を実装しました (Firefox バグ 1303788)。
* rest parameter の分割代入 を実装しました (Firefox バグ 1243717)。
* べき乗演算子 (\*\*) をデフォルトで有効にしました (Firefox バグ 1291212)。
* `DateTimeFormat` や `Date.toLocaleString()` といった日付関連の API の `timeZone` オプションで、IANA タイムゾーン名称 が使用可能になりました (Firefox バグ 837961)。

#### 変更および削除

* 配列の分割代入 で、trailing comma を持つ rest parameters を使用した場合に `SyntaxError` が発生するようになりました (Firefox バグ 1041341)。
* オブジェクトの分割代入 で、`__proto__` プロパティの重複が可能になりました (Firefox バグ 1204024)。
* `Array.prototype.toLocaleString()` を、Intl API のパラメーター "`locales`" および "`options`" をサポートするように再実装しました (Firefox バグ 1130636)。
* `TypedArray` コンストラクターで、新しい typed array を生成するため iterable を受け入れるようになりました (Firefox バグ 1232266)。
* `TypedArray.from()`、`TypedArray.of()`、`TypedArray.prototype.filter()`、`TypedArray.prototype.map()`、`TypedArray.prototype.slice()`、`TypedArray.prototype.subarray()` が、値 `this` が有効な Typed Array のコンストラクターであることを要求するようになりました (Firefox バグ 1122396)。
* 非標準の `ArrayBuffer.slice()` メソッド (`ArrayBuffer.prototype.slice()` ではありません) が非推奨になり、使用すると警告が発生します (Firefox バグ 1316913)。
* Unicode コードポイントエスケープ が、識別子として使用可能になりました (例: "`let \u{61} = 123`"。Firefox バグ 1314037 をご覧ください)。
* ES2015 に従って、`\u2e2f` および `ⸯ` を識別子として使用したときに例外が発生するようになりました。詳しくは Firefox バグ 917436 および Firefox バグ 1197230 をご覧ください。
### WebAssembly

* Gecko で WebAssembly をサポートしました。
### DOM

* Selection API を全面的に提供しました。新たに `selectstart` および `selectionchange` イベントに対応しました (Firefox バグ 1309612)。
* `Event.composed` プロパティをサポートしました。この論理値は、イベントが shadow root を経由して標準 DOM に伝達できるかを示します (Firefox バグ 1292063)。
* HTML 要素、`<svg>` 要素、`<math>` 要素に限り、`Element.requestFullscreen()` を呼び出してフルスクリーンモードに移行できるようになりました (Firefox バグ 1305928)。
* Touch event を、Windows デスクトップ環境で再び有効化しました (Firefox バグ 1244402)。これはいくつかの主要サイトで問題が発生したため、Firefox 24 で無効化していました (Firefox バグ 888304)。
* `focusin` および `focusout` イベントを実装しました (Firefox バグ 687787)。
* `isSecureContext` プロパティを実装しました (Firefox バグ 1269052)。
* ウェブアプリマニフェスト のインストールイベントを appinstalled に改名しました (`Window/appinstalled_event` をご覧ください)。サービスワーカーのインストールイベント (`oninstall` をご覧ください) との混同を避けるためです。詳しくは Firefox バグ 1309099 をご覧ください。
* Drag and drop API の `DataTransfer.types` プロパティが、`DOMStringList` ではなく文字列の凍結された配列を返すようになりました (Firefox バグ 1298243)。
* `loadstart` および `loadend` イベントが `<img>` 要素で発生するようになりました (Firefox バグ 1264769。
* Notifications API の `Notification.requireInteraction` を実装しました (Firefox バグ 862395)。
* `Window.open()` メソッドで、`noopener` ウィンドウ機能特性 が使用可能になりました (Firefox バグ 1267339)。これは、`rel="noopener"` リンクタイプ の機能を反映します。
* Web Components API の `CustomElementRegistry.get()` メソッドを実装しました (Firefox バグ 1275838)。
* Pointer Event の `width` および `height` プロパティのデフォルト値が 1 になりました (Firefox バグ 1304315)。
* 最新の仕様書 における変更点を含むように、File and Directory Entries API を更新しました (詳しくは Firefox バグ 1284987 をご覧ください)。
* `UIEvent` で定義されていた `cancelBubble` プロパティが、 `Event` インターフェイスで定義するようになりました。詳しくは Firefox バグ 1298970 をご覧ください。

#### 変更および削除

* 通話を制御する Firefox OS の API (Contacts、MobileConnection、Icc など) を削除しました (Firefox バグ 1311206)。
* Firefox OS の `Identity` インターフェイスを削除しました (Firefox バグ 1309030)。
* Firefox OS の Voicemail API (`MozVoicemail`、`MozVoicemailEvent`、`MozVoicemailStatus`、`Navigator.mozVoicemail`) を削除しました (Firefox バグ 1309723)。
* Firefox OS の Cell Broadcast API (`MozCellBroadcast`、`MozCellBroadcastEvent`、`MozCellBroadcastMessage`、`Navigator.mozCellBroadcast`) を削除しました (Firefox バグ 1306772)。
* Firefox OS の TV broadcast 関連 API を削除しました (Firefox バグ 1306778)。
* Firefox OS の FM Radio API (`FMRadio`、`Navigator.mozFMRadio`) を削除しました (Firefox バグ 1306779)。
### サービスワーカーと Fetch

* `Headers.getAll()` を削除しました。また `Headers.get()` が、指定したヘッダーの (最初の値だけではなく) すべての値を取り出すようになりました (Firefox バグ 1278275)。これは、最新の Fetch API 仕様の更新内容に準拠しています。
### Web Audio API

* `ConstantSourceNode` インターフェイスを追加しました。これは、すべて同じ値であるサンプルのストリームを常に出力するオーディオソースを表します。複雑なオーディオフローを単純化するためにこのインターフェイスをどのように使用するかを示す例を、Controlling multiple parameters with ConstantSourceNode (en-US) でご覧ください。
### WebRTC

* ICE 接続が一時的に不通になったとき、`RTCPeerConnection.iceConnectionState` (en-US) プロパティが `"disconnected"` に設定されるようになりました。これは一時的な問題で間もなく解決する見込みであり、後に接続が `"connected"` 状態に戻ることを示します (Firefox バグ 852665)。
* `MediaDevices.devicechange_event` イベントと、これに対応するハンドラーは、 Firefox 51 で Mac に限り実装してデフォルトで無効化していましたが、Windows および Linux でも実装して、すべてのプラットフォームでデフォルトで有効にしました。
* `MediaStream.active` プロパティをサポートしました。これはストリームで少なくとも 1 つのトラックが現在再生中であるかを示す、読み取り専用の Boolean 型プロパティです。
* Firefox 52 より前のバージョンでは `MediaStreamTrack.stop()` メソッドで、ローカルトラック (すなわち、`getUserMedia()` で取得したトラック) しか停止できませんでした。Firefox 52 で、WebRTC 接続と関連付けられた `MediaStream`、Web Audio API ストリーム、`CanvasCaptureMediaStream` (en-US) など、さまざまなトラックを停止できるようになりました。
* 以前は Firefox のイベントループによってひとつのパスで `TextTrack` の `mode` を繰り返し変更すると、複数の `change` イベントが親メディア要素の `textTracks` で指定された `TextTrackList` (en-US) に発行されていました。Firefox 52 から、ひとつのイベントに統合するようになりました (Firefox バグ 882674)。
### Audio/Video/Media

* `<audio>` または `<video>` 要素を扱っていてエラーが発生したときに `HTMLMediaElement.error` で指定される `MediaError` (en-US) オブジェクトが、`message` (en-US) プロパティを持つようになりました。これは、発生したエラーの具体的な説明を提供します。この文字列はエラーの事象について詳細情報を提供して、なぜ誤っているかの見識を与えます (Firefox バグ 1299072)。このフィールドは Firefox 51 から nightly ビルドに含まれていましたが、release を含むすべてのビルドで有効化しました。
### その他の API

* Firefox 50 で追加した (ただし常にエラーを返す) `FileSystemFileEntry.createWriter()` メソッドを削除しました (Firefox バグ 1315185)。
* Firefox OS 独自の Apps installation/management API を、プラットフォームから削除しました (Firefox バグ 1261019)。
* Firefox OS 独自の Web Telephony API を、プラットフォームから削除しました (Firefox バグ 1309719)。
* Firefox OS 独自の Web Bluetooth API を、プラットフォームから削除しました (Firefox バグ 1310020)。
* Battery Status API が、chrome/特権付きコードに限り使用可能になりました (Firefox バグ 1313580)。
* `ImageBitmapRenderingContext.transferImageBitmap()` を `ImageBitmapRenderingContext.transferFromImageBitmap()` (en-US) に改名しました (Firefox バグ 1304767)。
* `mozDash` および `mozDashOffset` メンバーを、`CanvasRenderingContext2D` から削除しました (Firefox バグ 931389)。
### HTTP

* `Referrer-Policy` ヘッダーで `same-origin`、`strict-origin`、`strict-origin-when-cross-origin` ディレクティブをサポートしました (Firefox バグ 1276836)。
* `script-src` のように、`'strict-dynamic'` source expression を `Content-Security-Policy` のディレクティブでサポートしました (Firefox バグ 1299483)。
* Strict Secure Cookies specification に従って、安全ではないサイト (`http:`) が "secure" ディレクティブで Cookie を設定する ことができなくなりました (Firefox バグ 976073)。
* HTTP/2 ヘッダー圧縮方式 HPACK の最大テーブルサイズを 4 KB から 64 KB に拡張しました (Firefox バグ 1296280)。
* `Large-Allocation` (en-US) ヘッダーを追加しました (Firefox バグ 1304140)。
### SVG

* SVG ドキュメントは、SVGDocument に代わり `XMLDocument` インターフェイスを使用して表すようになりました。これは SVG 2 仕様で変更されました。
### セキュリティ

* ログインページ (すなわち `<input type="password">` フィールドを含むページ) でログイン情報が安全でない方法で送信されると思われる場合に、Firefox はユーザーに警告するため、ページ内のパスワードフィールドの下に警告メッセージを表示します (Firefox バグ 1319119)。また、安全でないログインフォームではオートフィルが無効になります (Firefox バグ 1217152)。詳しくは 安全でないパスワード をご覧ください。
* SHA-1 SSL 証明書のサポートを廃止しました。SHA-1 証明書を使用する安全なページに移動すると、Untrusted Connection エラーが発生します (Firefox バグ 1330043)。
プラグイン
-----

Flash を除くすべての NPAPI プラグインのサポートを廃止しました。Flash の使用も将来、段階的に廃止します。

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

### WebExtensions

新規 API:

* `sessions` API
* `topSites` API
* `omnibox` API
* `runtime.onInstalled` および `runtime.onStartup` (en-US) イベント
* webRequest の非同期イベントハンドラー
* `bookmarks.onMoved`、`bookmarks.onCreated`、`bookmarks.onChanged` イベント
* commands マニフェストキー の `_execute_browser_action` および `_execute_page_action`
* content\_scripts マニフェストキーの `match_about_blank`
### インターフェイス

* ドロップされた複数のアイテムを扱うための `nsIDroppedLinkHandler.dropLinks` メソッドおよび `nsIDroppedLinkItem` インターフェイスを追加しました (Firefox バグ 92737)。
### XUL

* `tabbrowser.loadTabs(uris, params)` メソッドのオーバーロードを追加しました (Firefox バグ 92737)。
* `browser.droppedLinkHandler` 関数のシグネチャを変更しました (Firefox バグ 92737)。
過去のバージョン
--------

* Firefox 52 for developers
* Firefox 51 for developers
* Firefox 50 for developers
* 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