Firefox 65 for developers
=========================

この記事では、開発者に影響を与える Firefox 65 の変更点について説明します。Firefox 65 は 2019 年 1 月 29 日に出荷されました。

ウェブ開発者のための変更
------------

### 開発者ツール

* Flexbox インスペクター をデフォルトで有効にしました。
* JavaScript デバッガー で、XHR のブレークポイントをサポートしました (Firefox バグ 821610)。
* アクセシビリティツリーでアイテムを右クリックすると、JSON ビューアに移動して ツリーを JSON として表示 できます。
* アクセシビリティピッカーの 色のコントラスト 表示機能を、文字列の背景が複雑 (例えばグラデーションや複雑な画像) である場合はコントラスト値の範囲を表示するように改良しました。
* ネットワークモニター のヘッダータブに、選択した要求のリファラーポリシーを表示するようになりました (Firefox バグ 1496742)。
* スタックトレースを表示するとき (例えばコンソールのログや JavaScript デバッガー)、自身のコードに集中できるようにするため、フレームワークのメソッドの呼び出しを認識してデフォルトで折りたたむようにしました。
* ネイティブの端末と同じように、JavaScript コンソールの履歴を見つけるための逆検索が可能になりました (Windows/Linux では `F9`、macOS では `Ctrl` + `R` を押下して検索文字列を入力します。さらに `Ctrl` + `R`/`Ctrl` + `S` で結果を切り替えます)。
* JavaScript コンソールの `$0` ショートカット (ページで現在調査している要素を参照します) で自動補完が可能になりました。例えば `$0.textContent` のようなプロパティの自動補完候補を得るために `$0.te` と入力できます。
* インスペクターのルールビューで編集した箇所が、変更点パネルに表示されるようになりました (Firefox バグ 1503920)。
### HTML

* イベントが無効な HTML 要素に配信されるようになりました。例えば、 `<button>`、`<fieldset>`、`<input>`、`<select>`、`<textarea>` 要素に `disabled` 属性が設定されていた場合です (Firefox バグ 329509)。
* Chrome や Safari に合わせて、`<iframe>` 要素で `src` 属性を削除すると `about:blank` を読み込むようにしました (Firefox バグ 1507842)。以前は、`src` を削除しても `iframe` の内容に影響はありませんでした。
* `<script>` 要素で `referrerpolicy` 属性をサポートしました (Firefox バグ 1460920)。
### CSS

* `image-rendering` プロパティの値 `crisp-edges` の接頭辞を削除しました (Firefox バグ 1496617)。
* 値が `auto` である `scrollbar-color` が、2 つの色ではなく `auto` として解釈するようになりました (Firefox バグ 1501418)。
* `break-*` プロパティを実装して、古い `page-break-*` プロパティをそれらの別名にしました (Firefox バグ 775618):
    + `page-break-before` は `break-before` の別名になりました。
    + `page-break-after` は `break-after` の別名になりました。
    + `page-break-inside` は `break-inside` の別名になりました。
* `overflow-wrap` プロパティの値 `anywhere` を実装しました (Firefox バグ 1505786)。
* 新しいステップ位置のキーワードである `jump-start`、`jump-end`、`jump-none`、`jump-both` (`steps()` タイミング関数 内で使用可能) を実装しました (Firefox バグ 1496619)。これは `frames()` タイミング関数の削除と同時に行いました。この関数は過去に同様の機能を実装していたものであり、非推奨になりました。
* ほかのブラウザーとの互換性のために、`-webkit-appearance` で新しい値をいくつか追加しました。特に、以下の値です。
    + `meter`。これはユーザーエージェントのスタイルシートで、`<meter>` 要素のデフォルトの値として使用されます。既存の値 `meterbar` は、`meter` の別名になりました (Firefox バグ 1501483)。
    + `progress-bar`。これはユーザーエージェントのスタイルシートで、`<progress>` 要素のデフォルトの値として使用されます。既存の値 `progressbar` は、`progress-bar` の別名になりました (Firefox バグ 1501506)。
    + `textarea`。これはユーザーエージェントのスタイルシートで、`<textarea>` 要素のデフォルトの値として使用されます。既存の値 `textfield-multiline` は、`textarea` の別名になりました (Firefox バグ 1507905)。
* ほかのブラウザーの動作に合わせるため、`user-select` の動作を変更しました (Firefox バグ 1506547)。具体的には以下のとおりです:
    + 要素で `user-select: all` を設定したとき、子孫要素で設定した `user-select` のほかの値を上書きしないようになりました。例えば、以下のコードをご覧ください:
     html
    ```html
    <div style="-webkit-user-select: all">
      All
      <div style="-webkit-user-select: none">None</div>
    </div>
    
    ```
    `none` を設定した `<div>` は、選択不可になります。以前はこの値が、親要素の値 `all` で上書きされました。
    + `contenteditable` である要素の内部にある `contenteditable` ではない要素が、選択可能になりました。
    + `user-select` の動作が、shadow DOM の内部・外部ともに同じになりました。
    + 独自仕様である値 `-moz-text` を削除しました。
* CSS 環境変数 (`env()` 関数) を実装しました (Firefox バグ 1462233)。

#### 廃止

* 設定項目 `layout.css.shape-outside.enabled` を削除しました。`about:config` で `shape-outside`、`shape-margin`、`shape-image-threshold` を無効化できなくなりました (Firefox バグ 1504387)。
* `user-select` プロパティの、Firefox 限定の値である `-moz-all`、`-moz-text`、`tri-state`、`element`、`elements`、`toggle` を削除しました。Firefox バグ 1492958 および Firefox バグ 1506547 をご覧ください。
* 前述のとおり、`frames()` タイミング関数を削除しました (Firefox バグ 1496619)。
### SVG

*変更なし。*

### JavaScript

* `Intl.RelativeTimeFormat` (en-US) をサポートしました (Firefox バグ 1504334)。
* 文字列の length の最大値を `2**28 - 1` (~256MB) から `2**30 - 2` (~1GB) に変更しました (Firefox バグ 1509542)。
* 常にトップレベルのグローバルオブジェクトを参照する `globalThis` プロパティを実装しました (Firefox バグ 1317422)。
### API

#### 新しい API

* Readable Streams をデフォルトで有効にしました (Firefox バグ 1505122)。
* Storage Access API をデフォルトで有効にしました (Firefox バグ 1513021)。

#### DOM

* `Performance.toJSON()` を Web Workers に公開しました (Firefox バグ 1504958)。
* `XMLHttpRequest` 要求で、要求した content type が `Blob` かつ要求メソッドが `GET` ではない場合に、`NetworkError` が発生するようになりました (Firefox バグ 1502599)。
* Fullscreen API で、`-moz-` 接頭辞がつく多くの機能が非推奨になりました。また、これらを発見すると JavaScript コンソールで非推奨の警告を表示するようになりました (Firefox バグ 1504946)。
* `createImageBitmap()` で、SVG 画像 (`SVGImageElement` (en-US)) を画像のソースとしてサポートしました。

#### DOM イベント

* 今後、`Window.open()` はイベントごとに 1 回だけ呼び出し可能になります (Firefox バグ 675574)。
* CJKT ユーザーに対してブラウザー間の互換性を高めるため、IME で変換している間に `keyup` および `keydown` イベントが発生するようになりました (Firefox バグ 354358)。

#### ウェブワーカー

* `SharedWorkerGlobalScope.onconnect` (en-US) のイベントオブジェクトが `MessageEvent` のインスタンスになりました。また、`data` プロパティが `null` からから文字列に変わりました (Firefox バグ 1508824)。

#### フェッチとサービスワーカー

* `Response.redirect()` メソッドが、最初の引数で有効な URL が指定されていない場合に、正しく `TypeError` を発生させるようになりました (Firefox バグ 1503276)。
* `ServiceWorkerContainer.register()` および `WorkerGlobalScope.importScripts()` (Service worker で使用している場合) メソッドが、有効な JavaScript MIME type のファイルを受け入れるようになりました (Firefox バグ 1354577)。
* `FetchEvent.replacesClientId` および `FetchEvent.resultingClientId` プロパティをサポートしました (Firefox バグ 1264177)。
* `ServiceWorkerGlobalScope.onmessageerror` および `ServiceWorkerContainer.onmessageerror` ハンドラープロパティを実装しました (Firefox バグ 1399446)。
* `HEAD` または `GET` メソッドの Fetch リクエストで、`Origin` ヘッダーを設定しないようにしました (Firefox バグ 1508661)。

#### メディア、ウェブオーディオ、WebRTC

* WebRTC の `RTCIceCandidateStats` (en-US) ディクショナリーを、最新の仕様に合わせて更新しました (Firefox バグ 1324788、Firefox バグ 1489040)。
* `MediaRecorder` の `pause` および `resume` イベント (また、対応するイベントハンドラープロパティ) は、ブラウザーの互換性では実装済みとしていましたが、以前は実装されていませんでした。これらを実装しました (Firefox バグ 1458538, Firefox バグ 1514016)。

#### Canvas と WebGL

* WebGL の `EXT_texture_compression_bptc` (en-US) および `EXT_texture_compression_rgtc` (en-US) テクスチャー圧縮拡張を、WebGL1 および WebGL2 のコンテキストに公開しました (Firefox バグ 1507263)。

#### 廃止

* Mutation events を、シャドウツリーで無効化しました (Firefox バグ 1489858)。
* `MediaStream` の非標準プロパティである `currentTime` を削除しました (Firefox バグ 1502927)。
* 設定項目 `dom.webcomponents.shadowdom.enabled` および `dom.webcomponents.customelements.enabled` を削除しました。Shadow DOM および Custom Elements は `about:config` で無効化できません (Firefox バグ 1503019)。
* 非標準の DOM `text` イベント (ブラウザーのエディター UI に、IME のコンポジション文字列や選択範囲を伝えるために発生します) を削除しました (Firefox バグ 1288640)。
* `keypress` イベントが非表示キー では 発生しなくなりました (Firefox バグ 968056)。ただし `Enter` キーと、 `Shift` + `Enter` および `Ctrl` + `Enter` の組み合わせは除きます (これらはブラウザー間の互換性のために維持します)。
### セキュリティ

* CORS の制限が要求ヘッダーに強制されるようになりました (Firefox バグ 1483815。詳しくは whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231 をご覧ください)。
### ネットワーク

*変更なし。*

### プラグイン

*変更なし。*

### WebDriver conformance (Marionette)

#### API の変更点

* `WebDriver:ElementSendKeys` が対話性の確認で `<input type=file>` をより緩やかに扱うようになり、`not interactable` エラーメッセージを発生させずに要素を非表示にできるようになりました。厳密な対話性の確認を行いたい場合は `strictFileInteractability` を使用できます (Firefox バグ 1502864)。

#### バグ修正

* ウィンドウ操作コマンドの `WebDriver:FullscreenWindow`、`WebDriver:MinimizeWindow`、`WebDriver:MaximizeWindow`、`WebDriver:SetWindowRect` が、より安定的になりました (Firefox バグ 1492499)。特殊な状況で無限ハングアップが発生しなくなりましたが、ウィンドウが 5 秒以内に要求した状態に達しなければタイムアウトします (Firefox バグ 1521527)。
* `WebDriver:ElementClick` が、クリックする要素の中心点を正しく計算するようになりました。寸法が 1 ピクセル四方でも対話できます (Firefox バグ 1499360)。

#### その他

* `unexpected alert open` エラーで、より有益なメッセージを提供するようになりました (Firefox バグ 1502268)。
### その他

* WebP 画像をサポートしました (Firefox バグ 1294490)。
    + また、特定の状況でブラウザ間の互換性を向上するために、WebP の MIMEType (`image/webp`) を HTML ファイルの `Accept` 標準 HTTP 要求ヘッダーに追加しました (Firefox バグ 1507691)。
* Windows で、AV1 コーデックをデフォルトでサポートしました (Firefox バグ 1452146)。
アドオン開発者向けの変更
------------

### API の変更

#### タブ

* tabs API を、タブサクセサーをサポートするように強化しました。タブがサクセサーを持つことができ、サクセサーはタブが閉じられたときにアクティブになるタブの ID です (Firefox バグ 1500479。詳しくは this blog post をご覧ください)。特に、以下の値です:
    + `tabs.Tab` 型が `successorId` プロパティを持つようになりました。これは、タブのサクセサーの ID を登録および取得するために使用できます。
    + `tabs.onActivated` (en-US) イベントリスナーのコールバックで、新しい引数 `previousTabId` を使用できます。これは、以前アクティブであったタブがまだ開かれていれば、その ID が入ります。
    + `tabs.update()` (en-US) 関数の `updateProperties` オブジェクトに、新しい省略可能のプロパティ`successorTabId` を追加しました。ID を更新するために使用できます。
    + `successorTabId` は、`tabs.get()` や `tabs.query()` といった関数でも返ります。
    + 新たに `tabs.moveInSuccession()` で、タブサクセサーをまとめて操作できます。
### Manifest の変更

*変更なし。*

### その他

* Webextension themes (en-US) の `headerURL`/`theme_frame` プロパティを、Android 版 Firefox でサポートしました (Firefox バグ 1429488)。
関連情報
----

* Hacks の関連記事: Firefox 65: WebP support, Flexbox Inspector, new tooling & platform updates
旧バージョン
------

* Firefox 65 for developers
* Firefox 64 for developers
* Firefox 63 for developers
* Firefox 62 for developers
* Firefox 61 for developers
* Firefox 60 for developers
* Firefox 59 for developers
* Firefox 58 for developers
* Firefox 57 for developers
* Firefox 56 for developers
* Firefox 55 for developers
* Firefox 54 for developers
* Firefox 53 for developers
* 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