Chrome 102: ウィンドウ コントロール オーバーレイ、さまざまなオリジン トライアルの終了、ファイル ハンドラとしての PWA など
特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2022 年 4 月 28 日の時点で Chrome 102 はベータ版です。PC 向けの最新版は Google.com で、Android では Google Play ストアでダウンロードできます。
Read More
特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2022 年 4 月 28 日の時点で Chrome 102 はベータ版です。PC 向けの最新版は Google.com で、Android では Google Play ストアでダウンロードできます。
インストールした PC ウェブアプリ向けのウィンドウ コントロール オーバーレイ
ウィンドウ コントロール オーバーレイは、ウィンドウ全体を覆うようにアプリのクライアント領域を拡張します。この領域には、タイトルバー、ウィンドウのコントロール ボタン(閉じる、最大化 / 復元、最小化)も含まれます。ウェブアプリのデベロッパーは、ウィンドウ コントロール オーバーレイを除くウィンドウ全体の描画と入力ハンドリングをする必要があります。この機能を使うと、デベロッパーはインストールされた PC ウェブアプリをオペレーティング システムのアプリのように見せることができます。詳しくは、PWA のタイトルバーのウィンドウ コントロール オーバーレイをカスタマイズするをご覧ください。
完了したオリジン トライアル
Chrome で以前にオリジン トライアルが行われていた以下の機能は、現在デフォルトで有効化されています。オリジン トライアルとして新機能を試して、ユーザビリティ、実用性、有効性についてのフィードバックをウェブ標準コミュニティに提供することができます。以下の項目を含めて、現在 Chrome でサポートされているオリジン トライアルに登録するには、Chrome オリジン トライアル ダッシュボードをご覧ください。Chrome のオリジン トライアルの詳細については、ウェブ デベロッパーのためのオリジン トライアル ガイドをご覧ください。Microsoft Edge は、Chrome とは別に独自のオリジン トライアルを行っています。詳細については、Microsoft Edge オリジン トライアル デベロッパー コンソールをご覧ください。
キャプチャ ハンドル
新しいメカニズムにより、アプリケーションが動画キャプチャをする別のアプリケーションに情報を公開できるようにします。これにより、キャプチャするアプリケーションとキャプチャされるアプリケーションを連携できるようになります。たとえば、プレゼンテーションの動画をキャプチャするビデオ会議アプリケーションで、ビデオ会議タブにユーザー向けのコントロールを表示して、キャプチャするタブのプレゼンテーションを操作することができます。
ネットワーク状態のパーティショニング
サイド チャンネルを使用したクロスサイト トラッキングを防ぐため、ネットワーク状態がネットワーク パーティション キーでパーティショニングされます。これは、トップフレームのサイトに加え、フレームのサイトで構成される可能性があります。この「ネットワーク状態」には、接続(H1、H2、H3、websocket)、DNS キャッシュ、ALPN / H2 サポートデータ、TLS / H3 再開情報、Reporting / NEL 構成とアップロード、Expect-CT 情報が含まれます。クロスサイト トラッキングは、ユーザーにとってプライバシーに対する大きな懸念となっています。本機能は、この問題に対処するうえで欠かせない部分の 1 つです。
Speculation Rules
Speculation Rules は、ナビゲーション前にプリフェッチできる外部リンクを定義するための柔軟な構文を提供します。また、可能な場合は、プライベート プリフェッチ プロキシの使用などの追加の拡張も提供します。
Web Bundle によるサブリソースの読み込み
この機能は、複数のリソースをバンドルできるフォーマットを使って大量のリソースを効率的に読み込むための新たなアプローチです(例 : Web Bundle)。
今回のリリースに追加されたその他の機能
ファイル ハンドラ Web App Manifest メンバー
ファイル ハンドラは、ウェブ アプリケーションが指定された MIME タイプや拡張子のファイルを扱えることを宣言できるようにします。ユーザーがウェブ アプリケーションでファイルを開こうとすると、そのウェブ アプリケーションがイベントを受け取ります。
PWA をファイル ハンドラにするには、Web App Manifest に file_handlers
メンバーを追加します。メンバーの詳細については、仕様をご覧ください。
inert 属性
新しい inert
属性を使うと、DOM ツリーの一部を不活性としてマークできます。不活性なノードは、以下のように動作します。
- ヒットテストは、
pointer-events
CSS プロパティを'none'
に設定した場合と同じように振る舞います。 - テキスト選択機能は、
user-select
CSS プロパティを'none'
に設定した場合と同じように振る舞います。 - 編集可能な場合、ノードは編集不可のように振る舞います。
- ページ内検索の場合、ユーザー エージェントはノードを無視しても構いません。
詳細については、inert の紹介をご覧ください。
ローカル フォントへのアクセス
ウェブ アプリケーションで、ローカル フォントとそれぞれのメタデータをエミュレーションできるようになります。この新しい API を使うと、ウェブ アプリケーションからローカル フォント内に格納されているテーブルデータにアクセスすることもできるので、カスタム テキスト スタックを使ってアプリケーション内にフォントをレンダリングできます。
ナビゲーション API
新しい Navigation
インターフェース(window からアクセス可能)を使うと、アプリケーションでナビゲーションをインターセプトしたり、ナビゲーションを開始したり、アプリケーションの履歴エントリを確認したりできます。これは、window.history
や window.location
よりも利便性が高く、単一ページウェブ アプリケーションのニーズに特化した仕組みを提供します。
hidden 属性の新しい until-found 値
Chrome で、hidden
属性に新しい値 until-found
が追加されます。これにより、ページ内検索、テキスト フラグメントへのスクロール、フラグメント ナビゲーションで要素が検索可能になります。これらの検索とナビゲーション機能で hidden=until-found
要素内の対象にスクロールする場合、新しく表示されるコンテンツまでスクロールされるように、ブラウザはその要素から hidden 属性を削除し、その要素に対して beforematch
イベントを発行します。詳細については、hidden=until-found で折りたたまれたコンテンツにアクセスできるようにする - Chrome デベロッパーをご覧ください。
オリジン プライベート ファイル システム拡張機能 : AccessHandle
オリジン プライベート ファイル システム(File System Access API の一部)が拡張され、データアクセスのパフォーマンスを改善する新たなサーフェスが加わります。この新しいサーフェスは、ファイルの内容へのインプレース書き込みと排他的書き込みを提供するという点で、既存のものとは異なります。この変更は、フラッシュされていない更新を整合性のとれた形で読み取る機能や、専用ワーカーで同期的に同じ処理を行う機能とともに、パフォーマンスを大幅に向上して新たなユースケースの可能性を開くものとなります。
サブリソースの Private Network Access Preflight リクエスト
ターゲット サーバーから明示的なパーミッションをリクエストする CORS Preflight リクエストが、サブリソースの Private Network Access のスケジュール前に送信されるようになります。プリフライトが失敗すると DevTools に警告が表示されますが、リクエストはこれまでどおり実行されます。これは、互換性を破る変更にはならない見込みです。ウェブサイトで新しいプリフライト リクエストが無視されたり失敗したりする場合は、これまでどおり動作します。
Private Network Access とは、パブリックなウェブサイトからプライベート IP アドレスや localhost へのリクエスト、またはプライベートなウェブサイト(イントラネットなど)から localhost へのリクエストを指します。プリフライト リクエストを送ることで、ルーターなどのプライベート ネットワーク デバイスに対するクロスサイト リクエスト フォージェリ攻撃のリスクを緩和できます。多くの場合、プライベート ネットワーク デバイスはこのような脅威から保護されていません。
Secure Payment Confirmation API の変更
今回のリリースには、Secure Payment Confirmation API への 3 つの変更点が含まれています。具体的には、PaymentMethod()
コンストラクタに渡されるデータが変更されます。
- 新しい必須プロパティ
data.rpId
。リライング パーティ ID を含めます。現在の実装でこれを指定していない場合、更新する必要があります。 - 新しい省略可能プロパティ
data.instrument.iconMustBeShown
。カードアート アイコンをダウンロードできない場合に、プレースホルダー アイコンが使われるようにします。このフィールドを false に設定すると、アイコンがダウンロードできる場合にのみ決済を進められるようになります。デフォルト値は true です。 - 新しい省略可能プロパティ
data.payeeName
。呼び出し元が、既存のdata.payeeOrigin
の代わりに、またはその横に、受取人の自然な名前を表示できるようにします。
requestDevice() の WebHID exclusionFilters オプション
HID.requestDevice()
に渡す options オブジェクトに exclusionFilters プロパティが含まれるようになります(HID には navigator.hid
でアクセスできます)。このプロパティを使うと、ブラウザのピッカーから一部のデバイスを除外できます。これを使うことで、正しく動作しないことがわかっているデバイスを除外できます。これまで、デベロッパーはカスタムのコードで選択されたデバイスをテストし、そのデバイスが動作しない場合、別のデバイスを選択するようユーザーに促す必要がありました。exclusionFilters プロパティ(用語はテキストで検索する必要があります)は、既存の options と同じメンバーを持つオブジェクトの配列です。
requestDevice() の options 引数の使用方法の例を示します。この例では、最初にベンダー ID 0xABCD でデバイスへのアクセスをリクエストします。このデバイスには、usage ページ コンシューマ(0x000C)と usage ID コンシューマ コントロール(0x0001)のコレクションも含まれている必要があります。プロダクト ID 0x1234 のデバイスは動作していません。
const [device] = await navigator.hid.requestDevice({ filters: [{ vendorId: 0xabcd, usagePage: 0x000c, usage: 0x0001 }], exclusionFilters: [{ vendorId: 0xabcd, productId: 0x1234 }], });
サポートの終了と機能の削除
このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。現在サポートが終了している機能と以前に削除された機能のリストは、ChromeStatus.com をご覧ください。
ユーザー アクティベーションによらない PaymentRequest.show() のサポート終了
サイトで、ユーザー アクティベーションによらない PaymentRequest.show()
を呼び出すことはできなくなります。ユーザー アクティベーションによらない PaymentRequest.show()
のトリガーを許可すると、悪意のあるウェブサイトによって不正利用される可能性があります。ユーザーを保護するため、ユーザー アクティベーションが必須となるように仕様が変更されました。購入操作が中断されることがないように、このメソッドの呼び出しは click
などのユーザー イベントの内部で行ってください。
Firefox は PaymentRequest
に対応していませんが、Safari の実装では、すでに show()
の呼び出しにユーザー アクティベーションが必須になっています。
SDP Plan B の削除
WebRTC でセッションを確立するために使われる Session Description Protocol(SDP)は、Chromium では 2 種類の方言 Unified Plan と Plan B によって実装されています。Plan B はクロスブラウザの互換性がないため、削除されます。
このバージョンの Chrome では、Plan B が使われると例外がスローされます。この例外を避ける必要があるデベロッパーは、2022 年 5 月 25 日までの逆トライアルに参加できます。12 月に終了した以前の逆トライアルに参加していて、現在のトライアルにも参加したい方は、新しいトークンをリクエストする必要があります。
Reviewed by Eiji Kitamura - Developer Relations Team