1. 序論
この節は非規範的である。
WebDriver は、ユーザーエージェントの イントロスペクションおよび リモート制御のためのプロトコルを定義する。この仕様は、 双方向通信を導入することにより WebDriver を拡張する。WebDriver の厳密な コマンド/レスポンス形式に代えて、これによりイベントを ユーザーエージェントから制御ソフトウェアへストリーミングできるようになり、 ブラウザー DOM のイベント駆動の性質によりよく一致する。
2. 基盤
この仕様は Infra Standard に依存する。[INFRA]
ネットワークプロトコルメッセージは CDDL を用いて定義される。[RFC8610]
この仕様は、map である wait queue を定義する。
この「イベントを待つ」ことを行うための、もっとよい 仕組みがきっとあるはずだ。
並列に実行されているアルゴリズム algorithm が、イベントの集合 events および resume id を awaits するとき:
-
algorithm の実行を一時停止する。
-
表明: wait queue は resume id を含まない。
-
wait queue[resume id] を (events, algorithm) に設定する。
-
wait queue が id を含まない場合、戻る。
-
(events, algorithm) を wait queue[id] とする
-
events 内の各 event について:
-
event が name と等しい場合:
-
wait queue から id を削除する。
-
algorithm 内のステップの実行を、 一時停止された地点から再開し、name および parameters を await の結果として渡す。
これがイベントループ上の他のどのタスクよりも先に 実行されることを保証するために、microtasks のようなものを 持つべきだろうか?
-
-
WebDriver configuration は、次を持つ struct である:
-
item user contexts。これは user contexts と value の間の weak map であり、初期値は空である。
-
item navigables。これは navigables と value の間の weak map であり、 初期値は空である。
WebDriver configuration は associated type を持ち、 これは type である。
WebDriver configuration に対する value は、その設定に対する associated type である型を持つ値、または unset のいずれかである。
Unset は、特定の設定 value が設定されていないことを示す値である。
注: このアルゴリズムは、与えられた navigable についての WebDriver configuration に、 navigables 内の値を確認し、次に user contexts 内、最後に global 内を確認することでアクセスできるようにする。 設定されていない場合は unset を返す。
WebDriver configuration configuration の、 navigable navigable に対する get WebDriver configuration value は:
-
top-level traversable を navigable の top-level traversable とする。
-
configuration の navigables が top-level traversable を含む場合:
-
navigable configuration value を configuration の navigables[top-level traversable] とする。
-
navigable configuration value が unset でない場合、 navigable configuration value を返す。
-
-
user context を navigable の associated user context とする。
-
configuration の user contexts が user context を含む場合:
-
user context configuration value を configuration の user contexts[user context] とする。
-
user context configuration value が unset でない場合、 user context configuration value を返す。
-
-
configuration の global を返す。
注: これは WebDriver configuration を target ごとに格納するための汎用アルゴリズムであり、target は navigable、user context のいずれか、または target が null もしくは省略された場合はグローバルに格納できる。
WebDriver configuration configuration の value value を、任意の target に store するには。これは navigable、 user context、または提供されない場合は null である:
-
target が null である場合、configuration の global を value に設定する。
-
target が user context である場合、configuration の user contexts[target] を value に設定する。
-
target が navigable である場合、configuration の navigables[target] を value に設定する。
注: この汎用アルゴリズムは、
command parameters 内の "userContexts" および "contexts" の存在に応じて、WebDriver
configuration の value
を global、user contexts、または
navigables に格納する。これらの
パラメーター
は相互に排他的である。どちらも提供されない場合、設定はグローバルに格納される。
与えられた command parameters について、WebDriver configuration configuration の value value を store WebDriver configuration するには:
-
command parameters が "
userContexts" を含み、かつ command parameters が "contexts" を含む場合、error を、error code invalid argument とともに返す。 -
affected navigables を空の set とする。
-
command parameters が "
contexts" を含む場合:-
navigables を、command parameters["
contexts"] で get valid top-level traversables by ids することを試みた結果とする。 -
navigables の各 navigable について:
-
-
そうでなく、command parameters が "
userContexts" を含む場合:-
user contexts を、command parameters["
userContexts"] で get valid user contexts することを試みた結果とする。 -
user contexts の各 user context について:
-
user context である associated user context を持つ、すべての top-level traversables のリスト内の 各 top-level traversable について反復する:
-
top-level traversable を affected navigables に追加する。
-
-
configuration の value を user context に store する。
-
-
-
そうでなければ:
-
すべての top-level traversables の各 top-level traversable について反復し、top-level traversable を affected navigables に追加する。
-
configuration の value をStore する。
-
-
affected navigables を返す。
3. プロトコル
この節は、WebDriver BiDi プロトコルの基本概念を定義する。これらの用語は、 トランスポート層での表現とは異なる。
このプロトコルは CDDL 定義を用いて定義される。実装者の便宜のため、2 つの別々の CDDL 定義が定義される。 すなわち、local end で生成され、remote end で消費されるメッセージの形式を 定義する remote end definition と、 remote end で生成され、 local end で消費されるメッセージの形式を定義する local end definition である。
3.1. 定義
この節は、remote end definition
および
local end definition
の初期内容を示す。
これらは、仕様の残りの部分で定義される定義断片によって拡張される。
Command= {id: js-uint, CommandData, Extensible, }CommandData= ( BrowserCommand // BrowsingContextCommand // EmulationCommand // InputCommand // NetworkCommand // ScriptCommand // SessionCommand // StorageCommand // WebExtensionCommand )EmptyParams= { Extensible }
Message= ( CommandResponse / ErrorResponse / Event )CommandResponse= {type:"success",id: js-uint,result: ResultData, Extensible }ErrorResponse= {type:"error",id: js-uint / null,error: ErrorCode,message: text, ?stacktrace: text, Extensible }ResultData= ( BrowserResult / BrowsingContextResult / EmulationResult / InputResult / NetworkResult / ScriptResult / SessionResult / StorageResult / WebExtensionResult )EmptyResult= { Extensible }Event= {type:"event", EventData, Extensible }EventData= ( BrowsingContextEvent // InputEvent // LogEvent // NetworkEvent // ScriptEvent )
EmptyResult は、 必須フィールドを持たない結果型であり、 結果データを生成しないコマンドの返り値の型として使用される。
Remote end definition
および Local end definition
Extensible= (*text => any)js-int= -9007199254740991..9007199254740991js-uint= 0..9007199254740991
3.2. セッション
WebDriver BiDi は、セッション概念を WebDriver から拡張する。
セッションは BiDi フラグを持ち、特に明記されない限り、 これは false である。
BiDi セッションは、セッションであって、BiDi フラグが true に設定されているものである。
-
BiDi sessions を新しい list とする。
-
active sessions 内の各 session について:
-
session が BiDi session である場合、session を BiDi sessions に追加する。
-
-
BiDi sessions を返す。
3.3. モジュール
WebDriver BiDi プロトコルはモジュールに編成される。
各 module は、ユーザー エージェントの特定の側面に関係する、関連した commands および events の集合を表す。たとえば、モジュールは DOM の検査や 操作、またはスクリプト実行のための機能を含むことがある。
各モジュールは、文字列である module name を持つ。
モジュール内で定義されるコマンドおよびイベントに対する
command name および
event name は、
module name
で始まり、その後にピリオド "." が続く。
commands を含むモジュールは、remote end definition
断片を定義する。これらは、モジュールの
commands に対して CommandData
グループ内に選択肢を提供し、また
追加の定義プロパティを定義することもできる。それらは、モジュール内のコマンド結果に対して
ResultData グループ内に追加の選択肢を提供する local end definition
断片を定義することもできる。
イベントを含むモジュールは、モジュールの events に対して
Event グループ内の
選択肢となる local end definition
断片を定義する。
実装は extension modules
を定義してもよい。これらは、単一のコロン
":" 文字を含む module name
を持たなければならない。コロンの前の部分は接頭辞であり、通常は特定の実装に固有のすべての
extension modules
で同じであり、特定の実装に対して一意であるべきである。
他の仕様は、プロトコルを拡張する独自の WebDriver-BiDi モジュールを定義してもよい。
そのようなモジュールは、コロン(:)文字を含む名前を持ってはならず、
また、その文字を含む command
names、event names、またはプロパティ
名を定義してはならない。
外部仕様の作者には、既存のモジュールを拡張するのではなく、新しいモジュールを追加することが推奨される。 既存のモジュールを拡張することが望まれる場合は、その拡張を元のモジュール定義を含む仕様に直接統合することが望ましい。
3.4. コマンド
command は非同期 操作であり、local end によって要求され、remote end 上で実行され、 その結果として result または error のいずれかが local end に返される。 複数の コマンドを同時に実行でき、コマンドは潜在的に 長時間実行されることがある。その結果、コマンドは順序どおりでなく完了することがある。
各 command は次によって定義される:
-
command type。これは、グループを含む
remote end definition断片によって定義される。そのような各グループは 2 つのフィールドを持つ:-
method。これは[module name].[method name]形式の文字列リテラルである。これは command name である。 -
params。これはコマンドに渡されるデータを含むマッピングを定義する。 この map に値が投入されたものが command parameters である。
-
-
result type。これは
local end definition断片によって定義される。 -
コマンドに対して取る動作を定義する remote end steps の集合。 これは BiDi session および command parameters が与えられ、 コマンドの result type のインスタンスを返す。
アクティブなセッションなしで実行できるコマンドは static command である。コマンドは、その 定義で述べられない限り static command ではない。
コマンドが local end から送信されるとき、 それらは command id を持つ。これは、特定の コマンドからのレスポンスを識別するために local end が使用する識別子である。 remote end の観点からは、この識別子は不透明であり、 コマンドを識別するために内部的に使用することはできない。
注: これは、command id が完全に local end によって制御され、セッションの過程で必ずしも一意ではないためである。たとえば、すべてのレスポンスを無視する local end は、 各コマンドに同じ command id を使用できる。
set of all command names は、set であり、 extension modules に属するものを含む、定義済みのすべての command names を含む。
3.5. エラー
WebDriver BiDi は、error codes の集合を WebDriver から次の追加コードで拡張する:
- invalid web extension
- 無効な Web 拡張機能をインストールしようとした。
- no such client window
- 未知の client window とやり取りしようとした。
- no such handle
- 未知の
RemoteObjectReferenceを逆シリアル化しようとした。 - no such history entry
- 未知の session history entry へ移動しようとした。
- no such network collector
- 未知の collector を削除しようとした。
- no such intercept
- 未知の network intercept を削除しようとした。
- no such network data
- 未知の network data を参照しようとした。
- no such node
- 未知の
SharedReferenceを逆シリアル化しようとした。 - no such request
- 未知の request を続行しようとした。
- そのようなスクリーンキャストはない
- 不明なスクリーンキャスト記録を停止しようとした。
- no such script
- 未知の preload script を削除しようとした。
- no such storage partition
- 存在しないストレージパーティション内のデータにアクセスしようとした。
- no such user context
- 未知の user context を参照しようとした。
- no such web extension
- 未知の Web 拡張機能を参照しようとした。
- unable to close browser
- ブラウザーを閉じようとしたが、失敗した。
- unable to set cookie
- Cookie を作成しようとしたが、ユーザーエージェントに拒否された。
- underspecified storage partition
- 十分に指定されていないストレージパーティション内のデータとやり取りしようとした。
- unable to set file input
- ファイル入力を設定しようとしたが、失敗した。
- unavailable network data
- 収集されていない、またはすでに破棄されたネットワークデータを取得しようとした。
ErrorCode="invalid argument"/"invalid selector"/"invalid session id"/"invalid web extension"/"move target out of bounds"/"no such alert"/"no such network collector"/"no such element"/"no such frame"/"no such handle"/"no such history entry"/"no such intercept"/"no such network data"/"no such node"/"no such request"/"no such screencast"/"no such script"/"no such storage partition"/"no such user context"/"no such web extension"/"session not created"/"unable to capture screen"/"unable to close browser"/"unable to set cookie"/"unable to set file input"/"unavailable network data"/"underspecified storage partition"/"unknown command"/"unknown error"/"unsupported operation"
3.6. イベント
event は通知であり、 remote end によって local end へ送信され、remote end 上で関心のある何かが 発生したことを通知する。
-
event type は、グループを含む
local end definition断片によって定義される。そのような各グループは 2 つのフィールドを持つ:-
method。これは[module name].[event name]形式の文字列リテラルである。これは event name である。 -
params。これはイベントデータを含むマッピングを定義する。 この map に値が投入されたものが event parameters である。
-
-
remote end event trigger。これはイベントがいつ トリガーされるか、および event type データを構築するステップを定義する。
-
任意で、remote end subscribe steps の集合。 これは、local end がイベントを購読するときに取るステップを定義する。定義される場合、 これらのステップは、関連付けられた subscribe priority を持つ。これは、複数のイベントが同時に有効化されたときにステップが実行される順序を制御する整数であり、 小さい整数ほど早く実行されるステップを示す。
BiDi session は subscriptions を持ち、これは list of subscriptions である。
BiDi session は known subscription ids を持ち、これは set であり、 local end に発行されたがまだ購読解除されていない、すべての subscription ids を含む。
subscription は、struct であり、 subscription id(文字列)、 event names(event names の set)、 top-level traversable ids(top-level traversables の ID の set) および user context ids(user contexts の ID の set)からなる。
subscription subscription は、subscription の top-level traversable ids が空の set であり、 かつ subscription の user context ids が空の set である場合、 global である。
event name および navigables が与えられたときの set of sessions for which an event is enabled は次である:
-
sessions を新しい set とする。
-
active BiDi sessions 内の各 session について:
-
session、event name および navigables で event is enabled である場合、 session を sessions に追加する。
-
-
sessions を返す。
session、 event name および navigables が与えられたとき、event is enabled であるかどうかを判定するには:
注: shared worker は複数のコンテキストに関連付けられ得るため、 navigables は set である。
-
top-level traversables を、navigables で get top-level traversables したものとする。
-
session の subscriptions 内の各 subscription について:
-
subscription の event names が event name を含まない場合、continue する。
-
subscription が global である場合、true を返す。
-
user context ids が空でない場合:
-
top-level traversables 内の各 navigable について反復する:
-
subscription の user context ids が、 navigable の associated user context の user context id を含む場合、 true を返す。
-
-
-
そうでなければ:
-
subscription top-level traversables を、subscription の top-level traversable ids で get navigables by ids したものとする。
-
top-level traversables と subscription top-level traversables の積集合が空でない場合、true を返す。
-
-
-
false を返す。
event name および session が与えられたときの set of top-level traversables for which an event is enabled は次である:
-
result を新しい set とする。
-
session の subscriptions 内の各 subscription について:
-
subscription の event names が event name を含まない場合、 continue する。
-
subscription が global である場合:
-
remote end の top-level traversables 内の各 traversable について:
-
traversable を result に追加する。
-
-
Break する。
-
-
そうでなく、user context ids が空でない場合:
-
remote end の top-level traversables 内の各 traversable について:
-
subscription の user context ids が traversable の associated user context の user context id を含む場合、 traversable を result に追加する。
-
-
-
そうでなければ:
-
top-level traversables を、subscription の top-level traversable ids で get navigables by ids したものとする。
-
top-level traversables の各項目を result に追加する。
-
-
-
result を返す。
-
events を空の set とする。
-
name が U+002E(ピリオド)を含む場合:
-
name がイベントに対する event name である場合、name を events に追加し、 data events とともに success を返す。
-
error code invalid argument を持つ error を返す
-
-
そうでなければ、name はモジュール内のすべてのイベントを表すものとして解釈される。 name が module name でない場合、error code invalid argument を持つ error を返す。
-
名前 name を持つモジュール内の各 event に対する event name を events に追加する。
-
data events とともに success を返す。
4. トランスポート
メッセージトランスポートは WebSocket プロトコルを用いて提供される。 [RFC6455]
注: WebSocket プロトコルの用語では、local end は クライアントであり、remote end はサーバー / リモートホストである。
注: commands および events のメッセージとしての符号化は JSON-RPC に似ているが、この仕様はそれを規範的に 参照しない。[JSON-RPC] 代わりに、remote ends に対する規範的要件は正確な処理モデルとして与えられ、 local ends に対する 規範的要件は与えられない。
WebSocket listener は、受信する WebSocket 接続を 受け入れることができるネットワークエンドポイントである。
WebSocket listener は host、port、secure flag、および list of WebSocket resources を持つ。
WebSocket listener listener が作成されたとき、remote end は、listener の host および port によって与えられるホストおよびポート上で、 WebSocket 接続を待ち受け始めなければならない。 listener の secure flag が設定されている場合、 listener から確立される接続は TLS で暗号化されなければならない。
remote end は、set of WebSocket listeners である active listeners を持ち、これは初期状態では空である。
remote end は、set of WebSocket connections not associated with a session を持ち、これは初期状態では空である。
WebSocket connection は、 WebSocket protocol の要件に従うネットワーク接続である
BiDi session は、set of session WebSocket connections を持ち、その要素は WebSocket connections である。これは 初期状態では空である。
BiDi session session は、session の session WebSocket connections が connection を含む場合、connection と associated with connection している。
注: 各 WebSocket connection は、最大でも 1 つの BiDi session と関連付けられる。
クライアントが WebSocket 接続を確立するとき、すなわち connection を active listeners の集合内の listener の 1 つに接続して 確立するとき、実装は WebSocket の server-side requirements に従って進めなければならず、受信接続を 受け入れるかどうかを決定するときに次のステップを実行する:
-
resource name を、クライアントの開始ハンドシェイクを読むことから得られるリソース名とする。 resource name が listener の list of WebSocket resources 内にない場合、 これらのステップの実行を停止し、要求されたサービスが利用できないかのように動作する。
-
resource name がバイト文字列 "
/session" であり、 実装が supports BiDi-only sessions する場合:-
接続を受け入れるべきかどうかを決定するための、その他の実装定義のステップを実行し、 受け入れない場合はこれらのステップの実行を停止し、 要求されたサービスが利用できないかのように動作する。
-
その接続を WebSocket connections not associated with a session に追加する。
-
戻る。
-
-
resource name で Get a session ID for a WebSocket resource し、 session id をその値とする。session id が null である場合、 これらのステップの実行を停止し、要求されたサービスが利用できないかのように動作する。
-
アクティブなセッションのリスト内に、 session id をその セッション ID とする セッションがある場合、session をその セッションとする。そうでなければ、これらの手順の実行を停止し、 要求されたサービスが利用できないものとして振る舞う。
-
接続を受け入れるべきかどうかを決定するための、その他の実装定義のステップを実行し、 受け入れない場合はこれらのステップの実行を停止し、 要求されたサービスが利用できないかのように動作する。
-
そうでなければ、connection を session の session WebSocket connections に追加し、サーバーが受信接続を受け入れることを選択するときの WebSocket server-side requirements に従って進める。
WebSocket メッセージが受信されたとき、WebSocket connection connection について、型 type およびデータ data が与えられる場合、remote end は connection、 type および data が与えられたものとして handle an incoming message しなければならない。
WebSocket の終了ハンドシェイクが開始されたとき、または WebSocket 接続が閉じられたとき、WebSocket connection connection について、remote end は connection が与えられたものとして handle a connection closing しなければならない。
注: 終了ハンドシェイクなしに WebSocket 接続が閉じられる可能性があるため、 両方の条件が必要である。
セッション session が与えられたとき、WebSocket リソース名を構築するには、次を実行する:
-
session が null なら、"
/session" を返す -
文字列 "
/session/" と session の セッション ID とを連結した結果を返す。
WebSocket リスナー listener および セッション session が与えられたとき、WebSocket URL を構築するには、 次を実行する:
-
resource name を、session により WebSocket リソース名を構築する 結果とする。
-
host を listener の host に、port を listener の port に、path を resource name に設定して構築された WebSocket URI を返す。これは、 listener の secure flag が設定されている場合は wss-URI 構成に従い、そうでなければ ws-URL 構成に従う。
resource name が与えられたとき、WebSocket リソースのセッション ID を取得するには、次を実行する:
-
resource name がバイト文字列 "
/session/" で始まらない場合、null を返す。 -
session id を、resource name 内の "
/session/" 接頭辞に続くバイト列とする。 -
session id が UUID の文字列表現でない場合、null を返す。
-
session id を返す。
-
リモートエンドが再利用したい既存の WebSocket リスナーが アクティブリスナー内にある場合、 listener をその リスナーとする。そうでなければ、listener を、実装定義の host、port、 secure flag、および空の WebSocket リソースのリストを持つ新しい WebSocket リスナーとする。
-
resource name を、session により WebSocket リソース名を構築する 結果とする。
-
resource name を listener の WebSocket リソースのリストに 追加する。
-
listener を返す。
注: 複数のセッションを処理する intermediary node は、1 つまたは多数の WebSocket listener を使用できる。WebDriver は、 endpoint node が同時に最大 1 つのセッションをサポートすると定義しているため、 listener は 1 つだけであることが想定される。
注: endpoint
node では、上記ステップにおける host は
通常 "localhost" になる。
-
type が text でない場合、connection、 null、および invalid argument が与えられたものとして send an error response し、最後に 戻る。
-
Assert: data は scalar value string である。そうでなければ、WebSocket の UTF-8 符号化データ内のエラー処理 が、すでに WebSocket connection を失敗させているためである。
UTF-8 エラーにどの status code が使用されるかを定義しているものはないように思われる。
-
connection と associated with connection している BiDi Session が存在する場合、 session をそのセッションとする。そうでなく、connection が WebSocket connections not associated with a session 内にある場合、session を null とする。そうでなければ、戻る。
-
parsed を、data が与えられたものとして JSON を Infra values に構文解析する結果とする。 これが例外を投げる場合、connection、 null、および invalid argument が与えられたものとして send an error response し、 最後に戻る。
-
session が null でなく、かつ active sessions 内にない場合、戻る。
-
parsed を
remote end definitionに対して照合する。 これが 一致になる場合:-
matched を、一致したデータを表す map とする。
-
Assert: matched は "
id"、"method"、および "params" を含む。 -
command id を matched["
id"] とする。 -
method を matched["
method"] とする -
command を、command name method を持つ command とする。
-
session が null であり、かつ command が static command でない場合、 connection、command id、および invalid session id が与えられたものとして send an error response し、戻る。
-
次のステップを並列に実行する:
-
result を、 session および command parameters matched["
params"] が与えられたものとして、 command に対する remote end steps を実行した結果とする。 -
result が error である場合、 connection、command id、および result の error code が与えられたものとして send an error response し、最後に 戻る。
-
value を result の data とする。
-
Assert: value は、command name method を持つ command に対応する result type の定義に一致する。
-
method が "
session.new" である場合、session を active sessions のリスト内の、その session ID が value の "sessionId" プロパティと等しいエントリーとし、connection を session の session WebSocket connections に追加し、 connection を WebSocket connections not associated with a session から削除する。 -
response を、
local end definition内のCommandResponse生成規則に一致する新しい map とする。idフィールドは command id に設定され、valueフィールドは value に設定される。 -
serialized を、response が与えられたものとして serialize an infra value to JSON bytes した結果とする。
-
serialized からなる WebSocket メッセージを送信する。 これは connection 上で行う。
-
-
-
そうでなければ:
-
command id を null とする。
-
parsed が map であり、かつ parsed["
id"] が存在し、0 以上の integer である場合、command id をその integer に設定する。 -
error code を invalid argument とする。
-
parsed が map であり、かつ parsed["
method"] が存在し、 string であるが、parsed["method"] が set of all command names 内にない場合、 error code を unknown command に設定する。 -
connection、command id、および error code が与えられたものとして Send an error response する。
-
settings object settings が与えられたとき、get related navigables するには:
-
related navigables を空の set とする。
-
settings の relevant global object が
Windowである場合:-
navigable を、relevant global object の associated
Documentの node navigable とする。 -
navigable が null でない場合、navigable を related navigables に追加する。
-
-
そうでなく、settings によって指定される global object が
WorkerGlobalScopeである場合、 global object の owner set 内の各 owner について:-
navigable を null とする。
-
owner が Document である場合、navigable を owner の node navigable に設定する。
-
navigable が null でない場合、navigable を related navigables に追加する。
-
-
related navigables を返す。
context ids の list navigable ids が与えられたとき、get navigables by ids するには:
list of navigables navigables が与えられたとき、get top-level traversables するには:
-
result を空の set とする。
-
navigables 内の各 navigable について:
-
navigable の top-level traversable を result に追加する。
-
-
result を返す。
context ids の list navigable ids が与えられたとき、get valid navigables by ids するには:
-
result を空の set とする。
-
navigable ids 内の各 navigable id について:
-
navigable を、navigable id で get a navigable することを試みた結果とする。
-
navigable を result に追加する。
-
-
data result とともに success を返す。
context ids の list navigable ids が与えられたとき、 get valid top-level traversables by ids するには:
-
result を空の set とする。
-
navigable ids 内の各 navigable id について:
-
navigable を、navigable id で get a navigable することを試みた結果とする。
-
navigable が top-level traversable でない場合、 error を、error code invalid argument とともに返す。
-
navigable を result に追加する。
-
-
data result とともに success を返す。
-
Assert: body は
Event生成規則に一致する。 -
serialized を、body が与えられたものとして serialize an infra value to JSON bytes した結果とする。
-
session の session WebSocket connections 内の各 connection について反復する:
-
serialized からなる WebSocket メッセージを送信する。 これは connection 上で行う。
-
-
error data を、
local end definition内のErrorResponse生成規則に一致する新しい map とする。idフィールドは command id に設定され、errorフィールドは error code に設定され、messageフィールドは、発生したエラーの人間可読な定義を含む 実装定義の文字列に設定され、stacktraceフィールドは任意で、 エラーが発生した時点のアクティブなスタックフレームのスタックトレース報告を含む 実装定義の文字列に設定される。 -
response を、error data が与えられたものとして serialize an infra value to JSON bytes した結果とする。
注: command id は null になり得る。その場合、
idフィールドも null に設定され、 response から省略されるわけではない。 -
response からなる WebSocket メッセージを送信する。 これは connection 上で行う。
WebSocket connection connection が与えられたとき、handle a connection closing するには:
-
connection と associated with connection している BiDi session が存在する場合:
-
session を、connection と associated with connection している BiDi session とする。
-
connection を session の session WebSocket connections から削除する。
-
-
そうでなく、WebSocket connections not associated with a session が connection を含む場合、connection をその set から削除する。
注記: これはいかなる セッションも終了しない。
session が与えられたとき、close the WebSocket connections するには:
-
session の session WebSocket connections 内の各 connection について:
-
connection で WebSocket の終了ハンドシェイクを開始する。
注: これにより、connection に対して handle a connection closing のステップが実行されることになり、connection に関連付けられたリソースが クリーンアップされる。
-
4.1. 接続の確立
WebDriver クライアントは、値 true で WebSocket URL capability を要求することにより、 双方向接続にオプトインする。
-
flags が "
bidi" を含む場合、戻る。 -
webSocketUrl を、capabilities から "
webSocketUrl" という名前のプロパティを取得する結果とする。 -
webSocketUrl が undefined である場合、戻る。
-
Assert: webSocketUrl は true である。
-
listener を、session が与えられたものとして start listening for a WebSocket connection した結果とする。
-
webSocketUrl を、listener および session で construct a WebSocket URL した結果に設定する。
-
capabilities 上の "
webSocketUrl" という名前のプロパティを webSocketUrl に設定する。 -
session の BiDi flag を true に設定する。
-
"
bidi" を flags に追加する。
実装は、HTTP Session ではない BiDi Session を クライアントが確立できるようにもするべきである。この場合、WebSocket サーバーへの URL は 帯域外で伝達される。これを許可する実装は supports BiDi-only sessions する。そのような実装が WebDriver セッションを開始する要求を 受け入れる準備ができた時点で、次を行わなければならない:
-
null が与えられたものとして Start listening for a WebSocket connection する。
5. サンドボックス化されたスクリプト実行
自動化ツールに共通する要件は、文書の DOM に アクセスできるが、その文書を含む navigable 内で実行されるスクリプトによって DOM API に加えられた変更についての情報を持たないスクリプトを 実行することである。
BiDi session は sandbox map を持ち、これは weak
map であり、その
キーは Window
オブジェクト、値は文字列と
SandboxWindowProxy
オブジェクトの間の map である。
注: ここでのサンドボックスの定義は、既存実装の 振る舞いを成文化しようとするものである。これは、仕様では以前は内部的なものと みなされていた実装の一部、特にプラットフォームオブジェクトの内部状態 (これは通常、ブラウザーエンジンの主たる実装言語におけるネイティブオブジェクトとして 実装される)と ECMAScript から見える状態との区別を公開する。既存のサンドボックス 実装はエンジン内の低レベルで行われているため、実装が仕様のすべての詳細に 収束するには遅い過程になる可能性がある。当面の間、実装者には 仕様との差異について詳細な文書を提供することが推奨され、この機能の利用者には サンドボックス内で実行されるスクリプトがすべての実装で動作することを 明示的にテストすることが推奨される。
5.1. サンドボックスレルム
各サンドボックスは一意の ECMAScript Realm である。しかし、sandbox realm は
Window
realm 内の既存のプラットフォームオブジェクトへのアクセスを、
SandboxProxy
オブジェクトを介して提供する。
-
name が空文字列である場合、error を error code invalid argument とともに返す。
-
window を navigable の active window とする。
-
sandbox map が window を含まない場合、sandbox map[window] を新しい map に設定する。
-
sandboxes を sandbox map[window] とする。
-
sandboxes が name を含まない場合、 sandboxes[name] を navigable で create a sandbox realm したものに設定する。
-
data sandboxes[name] とともに success を返す。
sandbox realm の作成を定義する。これは window をラップする
SandboxWindowProxy
を返すことになる。
target realm が与えられたとき、get a sandbox name するには:
-
realms maps を、sandbox map の値を取得するものとする。
-
realms maps 内の各 realms map について:
-
realms map 内の各 name → realm について:
-
realm が target realm である場合、name を返す。
-
-
-
null を返す。
5.2. サンドボックスプロキシオブジェクト
SandboxProxy オブジェクトは、別の realm からの
オブジェクトへのサンドボックス化されたアクセスを仲介する exotic object である。
Sandbox proxy objects は、次の制限を強制するように設計されている:
-
プラットフォームオブジェクトにはアクセスできるが、プロパティアクセスは Web IDL で定義されたプロパティのみを返し、ECMAScript で定義されたプロパティは返さない (基礎となるインターフェイスに存在しない "expando" プロパティ、 または基礎となるインターフェイス内のプロパティをシャドウする ECMAScript で定義されたプロパティのいずれも返さない)。
-
プロパティの設定は、Web IDL で定義された setter steps を実行するか、 proxy object 上にプロパティを設定する。これは、サンドボックス外で書き込まれたプロパティには アクセスできないが、インターフェイスメンバーは通常どおり使用できることを意味する。
SandboxProxy
interface object は存在しない。
SandboxProxy
がどのように機能するかを詳細に定義する
-
object が
SandboxProxyまたはSandboxWindowProxyである間、object をその wrapped object に設定する。 -
object を返す。
5.3. SandboxWindowProxy
SandboxWindowProxy は、
Window
オブジェクトを表す exotic object であり、それは SandboxProxy
オブジェクトによってラップされる。これは、そのデータへのサンドボックス化された
アクセスを Window
global 内で提供する。
6. ユーザーコンテキスト
user context は、remote end 内にある 0 個以上の top-level traversables の集合を表す。 各 user context は、 関連付けられた storage partition を持つため、remote end のデータは 異なる user contexts 間で共有されない。
これが user context の概念や storage との相互作用を形式的に定義する最良の方法であるかは不明である。
注: Infra 仕様は、user contexts と同じ概念を指すために "user agent" という用語を使用する。しかし、これは 複数の user contexts を持つ Web クライアント全体を意味する "user agent" という用語の用法と互換性がない。この違いは Web コンテンツからは 見えないが、WebDriver を介して観測されるため、この用語法の使用を避ける。
user context は user context id を持ち、 これは user context の作成時に設定される一意の文字列である。
navigable は associated user context を持ち、これは user context である。
新しい top-level traversable が作成されると、その associated user context は set of user contexts 内の user context に設定される。
注: 場合によっては、 top-level traversable が作成されるときに user context が 仕様によって設定される。しかし、そのような要件が存在しない場合、 associated user context for a top-level traversable は implementation-defined である。
non-null の opener を持つ top-level traversables は、その opener と同じ associated user context を持つと指定すべきだろうか? これが既存実装で強制されているものか確認する必要がある。
child navigable の associated user context は、 その parent の associated user context である。
どの associated user context にもなっていない user context、 すなわちどの top-level traversable に対してもそうでないものは、empty user context である。
default user
context は、user
context であり、user context id "default" を持つ。
実装は set of user contexts を持ち、これは set of user contexts である。初期状態では、これは default user context を含む。
実装はいつでも、たとえばユーザー操作に応じて、新しい user contexts を set of user contexts に 追加してもよい。
注: ここでいう「いつでも」には実装の 起動中も含まれるため、ある実装は常に set of user contexts 内に 複数のエントリーを持つことがある。
実装は、default user context を除き、任意の empty user context を set of user contexts からいつでも 削除してもよい。 ただし、そのような user contexts を削除する必要はない。 empty user contexts でない User contexts は、 set of user contexts から削除されてはならない。
BiDi session は user context to accept insecure certificates override map を持ち、これは user contexts と boolean の間の map である。
BiDi session は user context to proxy configuration map を持ち、これは user contexts と proxy configuration の間の map である。
emulated network conditions struct は、次を持つ struct である:
-
offline という名前の item。これは boolean または null である。
BiDi session は emulated network conditions を持ち、これは struct であり、 default network conditions という名前の item を持つ。これは emulated network conditions struct または null であり、また user context network conditions という名前の item を持つ。これは user contexts と emulated network conditions struct の間の weak map であり、 さらに navigable network conditions という名前の item を持つ。これは navigables と emulated network conditions struct の間の weak map である。
user context が set of user contexts から削除されたとき、 remove user context subscriptions する。
remove user context subscriptions するには:
-
active sessions 内の各 session について:
-
subscriptions to remove を set とする。
-
session の subscriptions 内の各 subscription について:
-
subscription の user context ids が、 navigable の associated user context の user context id を含む場合;
-
navigable の associated user context の user context id を、 subscription の user context ids から削除する。
-
subscription の user context ids が 空である場合:
-
subscription を subscriptions to remove に追加する。
-
-
-
-
subscriptions to remove を session の subscriptions から削除する。
-
-
set of user contexts 内の各 user context について:
-
user context の user context id が user context id と等しい場合:
-
user context を返す。
-
-
null を返す。
user context ids が与えられたとき、get valid user contexts するには:
-
result を空の set とする。
-
user context ids の各 user context id について:
-
user context を、user context id で get user context したものに設定する。
-
user context が null である場合、error を error code no such user context とともに返す。
-
user context を result に追加する。
-
-
result を返す。
7. モジュール
7.1. session モジュール
session モジュールは、remote end のステータスを監視するための コマンドおよびイベントを含む。
7.1.1. 定義
SessionCommand = (
session.End //
session.New //
session.Status //
session.Subscribe //
session.Unsubscribe
)
SessionResult = (
session.EndResult /
session.NewResult /
session.StatusResult /
session.SubscribeResult /
session.UnsubscribeResult
)
-
session を active sessions から削除する。
-
active sessions が 空である場合、 webdriver-active flag を false に設定する。
session が与えられたとき、cleanup the session するには:
-
session で Close the WebSocket connections する。
-
set of user contexts 内の各 user context について:
-
session の user context to accept insecure certificates override map[user context] を削除する。
-
session の user context to proxy configuration map[user context] を削除する。
-
-
session の blocked request map 内の各 request id → (request, phase, response) について:
-
"
continue request"、request id および (response, "incomplete") で Resume する。
-
-
session の network collectors 内の各 collector について:
-
collector id を collector の collector とする。
-
collected network data 内の各 collected data について、collected data および collector id で remove collector from data する。
-
-
session の スクリーンキャスト 記録マップ内の各screencast recordingについて:
-
screencast recordingを与えて、スクリーンキャスト記録を停止する。
-
screencast recordingを除去する、スクリーンキャスト記録マップから。
-
-
active sessions が 空である場合、 cleanup remote end state する。
-
実装固有のクリーンアップステップを実行する。
-
default cache behavior を "
default" に設定する。 -
現在の remote end 設定で通常有効にされる 実装固有のリソースキャッシュを有効にするための、実装定義のステップを実行する。
7.1.2. 型
7.1.2.1. session.CapabilitiesRequest 型
session.CapabilitiesRequest= { ?alwaysMatch: session.CapabilityRequest, ?firstMatch: [*session.CapabilityRequest] }
session.CapabilitiesRequest 型は、セッションについて要求される
capabilities を表す。
7.1.2.2. session.CapabilityRequest 型
remote end definition
および local end definition
session.CapabilityRequest= { ?acceptInsecureCerts: bool, ?browserName: text, ?browserVersion: text, ?platformName: text, ?proxy: session.ProxyConfiguration, ?unhandledPromptBehavior: session.UserPromptHandler, Extensible }
session.CapabilityRequest 型は、要求される capabilities の特定の集合を表す。
WebDriver BiDi は additional WebDriver capabilities を定義する。次の表は、各実装が WebDriver BiDi について サポートしなければならない capabilities を列挙する。
| Capability: | WebSocket URL |
|---|---|
| Key: | "webSocketUrl"
|
| Value type: | boolean |
| Description: | 現在のセッションが双方向接続をサポートすることを定義する。 |
webSocketUrl" capability に対する
additional capability deserialization
algorithm は、パラメーター value を取り、次である:
-
value が boolean でない場合、error を code invalid argument とともに返す。
-
data value とともに success を返す。
webSocketUrl" capability に対する
matched capability serialization
algorithm は、パラメーター value を取り、次である:
7.1.2.3. session.ProxyConfiguration 型
remote end definition
および local end definition
session.ProxyConfiguration= { session.AutodetectProxyConfiguration // session.DirectProxyConfiguration // session.ManualProxyConfiguration // session.PacProxyConfiguration // session.SystemProxyConfiguration }session.AutodetectProxyConfiguration= (proxyType:"autodetect", Extensible )session.DirectProxyConfiguration= (proxyType:"direct", Extensible )session.ManualProxyConfiguration= (proxyType:"manual", ?httpProxy: text, ?sslProxy: text, ? session.SocksProxyConfiguration, ?noProxy: [*text], Extensible )session.SocksProxyConfiguration= (socksProxy: text,socksVersion: 0..255, )session.PacProxyConfiguration= (proxyType:"pac",proxyAutoconfigUrl: text, Extensible )session.SystemProxyConfiguration= (proxyType:"system", Extensible )
7.1.2.4. session.UserPromptHandler 型
Remote end definition
および local end definition
session.UserPromptHandler= { ?alert: session.UserPromptHandlerType, ?beforeUnload: session.UserPromptHandlerType, ?confirm: session.UserPromptHandlerType, ?default: session.UserPromptHandlerType, ?file: session.UserPromptHandlerType, ?prompt: session.UserPromptHandlerType, }
session.UserPromptHandler 型は、
user prompt handler の設定を表す。
注: file はファイルピッカーを処理する。"accept"
および "dismiss" は
ピッカーを閉じる。"ignore" はピッカーを開いたままにする。
7.1.2.5. session.UserPromptHandlerType 型
Remote end definition
および local end definition
session.UserPromptHandlerType="accept"/"dismiss"/"ignore";
session.UserPromptHandlerType 型は、
user prompt handler の振る舞いを表す。
7.1.2.6. session.Subscription 型
session.Subscription = text
session.Subscription 型は一意の subscription identifier を表す。
7.1.2.7. session.SubscribeParameters 型
session.SubscribeParameters= {events: [+text], ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], }
session.SubscribeParameters 型は、特定のイベント集合を
購読する要求を表す。
7.1.2.8. session.UnsubscribeByIDRequest 型
session.UnsubscribeByIDRequest= {subscriptions: [+session.Subscription], }
session.UnsubscribeByIDRequest 型は、subscription ID によって識別される
event subscriptions を削除する要求を表す。
7.1.2.9. session.UnsubscribeByAttributesRequest 型
session.UnsubscribeByAttributesRequest= {events: [+text], }
session.UnsubscribeByAttributesRequest 型は、
subscription attributes を用いて購読解除する要求を表す。
7.1.3. コマンド
7.1.3.1. session.status コマンド
session.status コマンドは、remote end が新しいセッションを 作成できる状態にあるかどうかについての情報を返し、 さらに実装固有の任意のメタ情報を含んでもよい。
これは static command である。
- Command Type
-
session.Status= (method:"session.status",params: EmptyParams, ) - Return Type
-
session.StatusResult= {ready: bool,message: text, }
session および command parameters が与えられたときの remote end steps は次である:
-
body を、次のプロパティを持つ新しい map とする:
- "ready"
- remote end の readiness state。
- "message"
- remote end の readiness state を説明する実装定義の文字列。
-
data body とともに success を返す
7.1.3.2. session.new コマンド
session.new コマンドにより、新しい BiDi session を作成できる。
注: この方法で作成されたセッションは、 HTTP 経由ではアクセスできない。
これは static command である。
- Command Type
-
session.New= (method:"session.new",params: session.NewParameters )session.NewParameters= {capabilities: session.CapabilitiesRequest } - Return Type
-
session.NewResult= {sessionId: text,capabilities: {acceptInsecureCerts: bool,browserName: text,browserVersion: text,platformName: text,setWindowRect: bool,userAgent: text, ?proxy: session.ProxyConfiguration, ?unhandledPromptBehavior: session.UserPromptHandler, ?webSocketUrl: text, Extensible } }
session および command parameters が与えられたときの remote end steps は次である:
-
session が null でない場合、error code session not created を持つ error を返す。
-
実装が何らかの理由で新しいセッションを開始できない場合、 error code session not created を持つ error を返す。
-
flags を、"
bidi" を含む set とする。 -
capabilities json を、command parameters および flags で process capabilities することを試みた結果とする。
-
capabilities を、capabilities json で convert a JSON-derived JavaScript value to an Infra value したものとする。
-
session を、capabilities および flags で create a session することを試みた結果とする。
-
session の BiDi flag を true に設定する。
注: このセッションの connection は、 呼び出し元によって現在の connection に設定される。
-
body を、
session.NewResult生成規則に一致する 新しい map とし、sessionIdフィールドを session の session ID に設定し、capabilitiesフィールドを capabilities に設定する。 -
data body とともに success を返す。
7.1.3.3. session.end コマンド
session.end コマンドは現在の セッションを終了する。
- Command Type
-
session.End= (method:"session.end",params: EmptyParams ) - Return Type
-
session.EndResult= EmptyResult
session および command parameters が与えられたときの remote end steps は次である:
-
session で End the session する。
-
data null とともに success を返し、並列に次の ステップを実行する:
-
このコマンドへのレスポンスで Send a WebSocket message ステップが呼び出されるまで待つ。
これは かなり不正確な表現だが、意図としては接続の シャットダウンを開始する前にコマンドへのレスポンスを送信する、ということが明確であることを期待している。
-
session で Cleanup the session する。
-
7.1.3.4. session.subscribe コマンド
session.subscribe コマンドは、特定のイベントを グローバルに、または navigables の集合に対して有効にする。
これは realms でも機能するよう 一般化する必要がある。
- Command Type
-
session.Subscribe= (method:"session.subscribe",params: session.SubscribeParameters ) - Return Type
-
session.SubscribeResult= {subscription: session.Subscription, }
-
event names を空の set とする。
-
command parameters["
events"] 内の各エントリー name について、 event names を、event names と、 name で obtain a set of event names することを 試みた結果との union とする。 -
input user context ids を、command parameters[
userContexts] で create a set したものとする。 -
input context ids を、command parameters[
contexts] で create a set したものとする。 -
input user context ids が空でなく、かつ input context ids が空でない場合、 error を error code invalid argument とともに返す。
-
subscription navigables を set とする。
-
top-level traversable context ids を set とする。
-
input context ids が空でない場合:
-
navigables を、 input context ids で get valid navigables by ids することを 試みた結果とする。
-
subscription navigables を、navigables で get top-level traversables したものに設定する。
-
subscription navigables 内の各 navigable について:
-
navigable の navigable id を top-level traversable context ids に追加する。
-
-
-
そうでなく、input user context ids が空でない場合:
-
input user context ids の各 user context id について反復する:
-
user context を、user context id で get user context したものとする。
-
user context が null である場合、error を error code no such user context とともに返す。
-
user context である associated user context を持つ、すべての top-level traversables のリスト内の 各 top-level traversable について反復する:
-
top-level traversable を subscription navigables に追加する。
-
-
-
-
そうでなければ、subscription navigables を、remote end 内のすべての top-level traversables の set に設定する。
-
subscription を、 subscription id が UUID の文字列表現に設定され、 event names が event names に設定され、 top-level traversable ids が top-level traversable context ids に設定され、 user context ids が input user context ids に設定された subscription とする。
-
subscribe step events を新しい map とする。
-
event names 内の各 event name について:
-
event name event name を持つ event が remote end subscribe steps を定義していない場合、 continue する。
-
existing navigables を、session および event name で set of top-level traversables for which an event is enabled したものとする。
-
subscribe step events[event name] を、 subscription navigables と existing navigables の difference に設定する。
-
-
subscription を session の subscriptions に追加する。
-
subscription の subscription id を session の known subscription ids に追加する。
-
subscribe step events を、キー event name one および event name two を持つ 2 つのエントリーが与えられたときの次の less than アルゴリズムを用いて昇順に並べ替える:
-
event one を、名前 event name one を持つ event とする
-
event two を、名前 event name two を持つ event とする
-
event one の subscribe priority が event two の subscribe priority より小さい場合は true を返し、そうでなければ false を返す。
-
-
subscription が global である場合、include global を true とし、 そうでなければ include global を false とする。
-
subscribe step events 内の各 event name → navigables について:
-
event name event name を持つ event について、 session、navigables および include global が与えられたものとして remote end subscribe steps を実行する。
-
-
body を、
session.SubscribeResult生成規則に一致する 新しい map とし、subscriptionフィールドを subscription の subscription id に設定する。 -
data body とともに success を返す。
7.1.3.5. session.unsubscribe コマンド
session.unsubscribe コマンドは、イベントを グローバルに、または navigables の集合に対して無効にする。
これは realms でも機能するように 一般化する必要がある。
- コマンド型
-
session.Unsubscribe= (method:"session.unsubscribe",params: session.UnsubscribeParameters, )session.UnsubscribeParameters= session.UnsubscribeByAttributesRequest / session.UnsubscribeByIDRequest - 戻り値型
-
session.UnsubscribeResult= EmptyResult
-
command parameters が "
subscriptions" を含まない場合:注: この条件は、 command parameters が session.UnsubscribeByAttributesRequest 生成規則に一致することを意味する。
-
event names を空の set とする。
-
command parameters["
events"] 内の各エントリー name について、 event names を、 event names と、name で obtain a set of event names することを 試みた結果との union とする。 -
new subscriptions を list とする。
-
matched events を set とする。
-
session の subscriptions の各 subscription について:
-
subscription の event names と event names のintersection が空の set である場合:
-
subscription が global でない場合:
-
subscription event names を、subscription の event names のclone とする。
-
event names の各 event name について:
-
subscription event names が空でない場合:
-
cloned subscription を、 subscription id が subscription の subscription id に設定され、 event names が subscription event names を含む新しい set に設定された subscription とする。
-
cloned subscription を new subscriptions に追加する。
-
-
-
matched events が event names と等しくない場合、error を error code invalid argument とともに返す。
-
session の subscriptions を new subscriptions に設定する。
-
-
そうでなければ:
-
subscriptions を、command parameters[
subscriptions] で create a set したものとする。 -
unknown subscription ids を、subscriptions と session の known subscription ids の間の difference とする。
-
unknown subscription ids が空でない場合:
-
error を error code invalid argument とともに返す。
-
-
subscriptions to remove を空の set とする。
-
session の subscriptions 内の各 subscription について:
-
subscriptions が subscription の subscription id を含む場合:
-
subscription を subscriptions to remove に追加する。
-
-
-
session の known subscription ids を、 session の known subscription ids と subscriptions の間の difference に設定する。
-
subscriptions to remove 内の各項目を session の subscriptions から削除する。
-
-
data null とともに success を返す。
7.2. browser モジュール
browser モジュールは、 remote end のブラウザープロセスを管理するためのコマンドを含む。
7.2.1. 定義
BrowserCommand = (
browser.Close //
browser.CreateUserContext //
browser.GetClientWindows //
browser.GetUserContexts //
browser.RemoveUserContext //
browser.SetClientWindowState //
browser.SetDownloadBehavior
)
BrowserResult = (
browser.CloseResult /
browser.CreateUserContextResult /
browser.GetClientWindowsResult /
browser.GetUserContextsResult /
browser.RemoveUserContextResult /
browser.SetClientWindowStateResult /
browser.SetDownloadBehaviorResult
)
7.2.2. ウィンドウ
各 top-level traversable は単一の client
window に関連付けられる。これは、その top-level traversable の active document を、その visibility state が
"visible" であるときにレンダリングするために使用される
viewport を含む矩形領域を表し、
traversable の表示に関連付けられたブラウザー固有のユーザーインターフェイス要素
(例: URL バー、ツールバー、または OS のウィンドウ装飾)も表す。
client window は client window id を持ち、 これはそのウィンドウを一意に識別する文字列である。
client window は x-coordinate を持ち、これは web-exposed screen area の左端とウィンドウの左端との間の CSS ピクセル数、または特定のウィンドウについてそれが意味をなさない場合は ゼロである。
client window は y-coordinate を持ち、これは web-exposed screen area の上端とウィンドウの上端との間の CSS ピクセル数、または特定のウィンドウについてそれが意味をなさない場合は ゼロである。
client window は width を持ち、これは CSS ピクセルにおけるウィンドウ矩形の幅である。
client window は height を持ち、これは CSS ピクセルにおけるウィンドウ矩形の高さである。
window の maximize the client window を行うには、実装はプラットフォームにおける window の最大化の概念に対応する ステップを実行するか、 window の x-coordinate が可能な限り 0 に近くなり、 その y-coordinate が可能な限り 0 に近くなり、 その width が web-exposed screen area の幅に可能な限り近くなり、その height が web-exposed screen area の高さに可能な限り近くなるように window を配置するべきである。これらのいずれかの選択肢がサポートされる場合、 maximize client window is supported である。
window の minimize the
client window を行うには、実装はプラットフォームにおける window の最小化の概念に対応する
ステップを実行するか、
そうでなければ window に関連付けられた
top-level traversables 内のすべての active documents の
visibility state
が "hidden" になり、かつ window の width および height がどちらも可能な限り 0 に近くなるように、
window を隠すべきである。これらのいずれかの選択肢が
サポートされる場合、minimize client window is supported である。
window の restore the
client window を行うには、実装はそれが
プラットフォーム定義の最大化状態でも、プラットフォーム定義の
最小化状態でもなく、かつ window に関連付けられた 1 つ以上の top-level traversable
が存在する場合は、そのうち少なくとも 1 つが "visible" 状態の
active document を持つことを保証するべきである。
これがサポートされる場合、restore client
window is supported である。
window が与えられたとき、get the client window state するには:
-
documents を空の list とする。
-
visible documents を空の list とする。
-
各 top-level traversable traversable について:
-
traversable の client window が window でない場合、 continue する。
-
document を traversable の active document とする。
-
document を documents に追加する。
-
document の visibility state が "
visible" である場合、 document を visible documents に追加する。
-
-
visible documents 内の各 document について:
-
document の fullscreen element が null でない場合、 "
fullscreen" を返す。
-
-
visible documents が空であるが documents が 空でない場合、または window がその他の OS 固有の 最小化状態にある場合、"
minimized" を返す。注: これは通常、必ずしもそうとは限らないが、 window の width および height が 0 に等しいことを意味する。
-
window が OS 固有の最大化状態にある場合、 "
maximized" を返す。注: これは通常、必ずしもそうとは限らないが、 window の width が web-exposed screen area の幅に等しく、 window の height が web-exposed screen area の高さに等しいことを意味する。
-
"
normal" を返す。
window および state が与えられたとき、set the client window state するには:
-
current state を、window で get the client window state したものとする。
-
current state が "
fullscreen"、"maximized"、または "minimized" であり、かつ state と等しい場合、data null とともに success を返す。 -
次の条件と関連するステップのリストにおいて、 関連する条件が true である最初のステップ集合を実行する:
- "
fullscreen" - fullscreen is supported でない場合、error を error code unsupported operation とともに返す。
- "
normal" - window について restore client window is supported でない場合、error を error code unsupported operation とともに返す。
- "
maximize" - window について maximize client window is supported でない場合、error を error code unsupported operation とともに返す。
- "
minimize" - window について minimize client window is supported でない場合、error を error code unsupported operation とともに返す。
- "
-
documents を空の list とする。
-
各 top-level traversable traversable について:
-
traversable に関連付けられた client window が window でない場合、 continue する。
-
document を traversable の active document とする。
-
document を documents に追加する。
-
-
documents が空である場合、 error を error code no such client window とともに返す。
-
current state が "
fullscreen" である場合:-
documents 内の各 document について:
-
document で Fully exit fullscreen する。
注: これは、 fullscreen でない window 内の文書に対しては何もしない。
-
-
-
current state が "
maximized" または "minimized" である場合:-
window で Restore the client window する。
-
-
state の値について分岐する:
- "
fullscreen" -
-
documents 内の各 document について:
-
document の visibility state が "
visible" である場合、 document の document element で fullscreen an element する。 -
Break する。
-
-
- "
maximize" - 1. window で Maximize the client window する。
- "
minimize" - 1. window で Minimize the client window する。
- "
-
data null とともに success を返す。
7.2.3. 型
7.2.3.1. browser.ClientWindow 型
browser.ClientWindow = text;
browser.ClientWindow は client window を一意に識別する。
7.2.3.2. browser.ClientWindowInfo 型
browser.ClientWindowInfo= {active: bool,clientWindow: browser.ClientWindow,height: js-uint,state:"fullscreen"/"maximized"/"minimized"/"normal",width: js-uint,x: js-int,y: js-int, }
browser.ClientWindowInfo 型は、
client window のプロパティを表す。
-
client window id を、client window の client window id とする。
-
state を、client window で get the client window state したものとする。
-
client window がオペレーティングシステムから送られるキーボード入力を 受け取ることができる場合、active を true とし、そうでなければ active を false とする。
注: これは、client window である client window を持つ top-level traversable が system focus を持つことを意味する場合もあれば、 ブラウザー自体のユーザーインターフェイスが現在フォーカスを持つことを意味する場合もある。
-
client window info を、
browser.ClientWindowsInfo生成規則に一致する map とし、clientWindowフィールドを client window id に、stateフィールドを state に、xフィールドを client window の x-coordinate に、yフィールドを client window の y-coordinate に、widthフィールドを client window の width に、heightフィールドを client window の height に、activeフィールドを active に設定したものとする。 -
client window info を返す
7.2.3.3. browser.UserContext 型
browser.UserContext = text;
browser.UserContext
は user
context を一意に識別する。
7.2.3.4. browser.UserContextInfo 型
browser.UserContextInfo= {userContext: browser.UserContext }
browser.UserContextInfo 型は user context のプロパティを表す。
7.2.4. コマンド
7.2.4.1. browser.close コマンド
browser.close コマンドは、すべての WebDriver セッションを終了し、remote browser instance 内の自動化状態をクリーンアップする。
- コマンド型
-
browser.Close= (method:"browser.close",params: EmptyParams, ) - 戻り値型
-
browser.CloseResult= EmptyResult
-
session で End the session する。
-
active sessions が空でない場合、 実装は unable to close browser の error code を持つ error を返してもよく、その後 次のステップを並列に実行する:
-
このコマンドへのレスポンスで Send a WebSocket message ステップが呼び出されるまで待つ。
-
session で Cleanup the session する。
注: ブラウザーが複数の自動化 セッションを持つ場合の挙動は、現在未指定である。任意のセッションが ブラウザーを閉じられるのか、最後に開かれたセッションだけが実際に ブラウザーを閉じられるのか、あるいは最初に開始されたセッションだけが可能なのかもしれない。この挙動は、 この仕様の将来のバージョンで完全に指定されるかもしれない。
-
-
active sessions 内の各 active session について:
-
active session で End the session する。
-
active session で Cleanup the session する
-
-
data null とともに success を返し、次のステップを並列に実行する。
-
このコマンドへのレスポンスで Send a WebSocket message ステップが呼び出されるまで待つ。
-
session で Cleanup the session する。
-
top-level traversables を、どれでも Close する。ただし prompting to unload しない。
-
自動化下の remote end に関連付けられたリソースを クリーンアップするための実装定義のステップを実行する。
注: たとえばこれには、自動化下のブラウザーに関連付けられた OS レベルのプロセスを正常にシャットダウンすること、remote end が自動化下にある間に作成した ユーザープロファイルデータなどの一時状態を削除すること、または WebSocket Listener をシャットダウンすることが 含まれ得る。ブラウザーおよびオペレーティングシステムの違いにより、 local ends がここで依存できる正確な不変条件を 詳細に指定することはできない。
-
7.2.4.2. browser.createUserContext コマンド
browser.createUserContext コマンドは user context を作成する。
- コマンド型
-
browser.CreateUserContext= (method:"browser.createUserContext",params: browser.CreateUserContextParameters, )browser.CreateUserContextParameters= { ?acceptInsecureCerts: bool, ?proxy: session.ProxyConfiguration, ?unhandledPromptBehavior: session.UserPromptHandler } - 戻り値型
-
browser.CreateUserContextResult= browser.UserContextInfo
session および command parameters を伴う remote end steps は次である:
-
user context を新しい user context とする。
-
command parameters が "
acceptInsecureCerts" を含む場合:注: "
acceptInsecureCerts" が 設定されている場合、それは accept insecure TLS flag の挙動を上書きする。-
acceptInsecureCerts を command parameters["
acceptInsecureCerts"] とする: -
acceptInsecureCerts が true であり、endpoint node が insecure TLS connections の受け入れをサポートしていない場合、 unsupported operation の error code を持つ error を返す。
-
session の user context to accept insecure certificates override map[user context] を acceptInsecureCerts に設定する。
-
-
command parameters が "
unhandledPromptBehavior" を含む場合、 unhandled prompt behavior overrides map[user context] を command parameters["unhandledPromptBehavior"] に設定する。 -
command parameters が "
proxy" を含む場合:-
proxy configuration を command parameters["
proxy"] とする。 -
remote end が user context ごとに proxy settings を構成できない場合、 または proxy configuration で proxy を構成できない場合、 unsupported operation の error code を持つ error を返す。
-
session の user context to proxy configuration map[user context] を proxy configuration に設定する。
-
-
user context を set of user contexts に追加する。
-
user context info を、
browser.UserContextInfo生成規則に一致する map とし、userContextフィールドを user context の user context id に設定したものとする。 -
data user context info とともに success を返す。
7.2.4.3. browser.getClientWindows コマンド
browser.getClientWindows コマンドは、 client window のリストを返す。
- コマンド型
-
browser.GetClientWindows= (method:"browser.getClientWindows",params: EmptyParams, ) - 戻り値型
-
browser.GetClientWindowsResult= {clientWindows: [ * browser.ClientWindowInfo] }
remote end steps は次である:
-
client window ids を空の set とする。
-
client windows を空の list とする。
-
各 top-level traversable traversable について:
-
client window を、traversable に関連付けられた client window とする
-
client window id を、client window の client window id とする。
-
client window ids が client window id を含む場合、continue する。
-
client window id を client window ids に追加する。
-
client window info を、client window で get the client window info したものとする。
-
client window info を client windows に追加する。
-
-
result を、
browser.GetClientWindowsResult生成規則に一致する map とし、clientWindowsフィールドを client windows に設定したものとする。 -
data result とともに success を返す。
7.2.4.4. browser.getUserContexts コマンド
browser.getUserContexts コマンドは、 user context のリストを返す。
- コマンド型
-
browser.GetUserContexts= (method:"browser.getUserContexts",params: EmptyParams, ) - 戻り値型
-
browser.GetUserContextsResult= {userContexts: [ + browser.UserContextInfo] }
remote end steps は次である:
-
user contexts を空の list とする。
-
set of user contexts 内の各 user context について:
-
user context info を、
browser.UserContextInfo生成規則に一致する map とし、userContextフィールドを user context の user context id に設定したものとする。 -
user context info を user contexts に追加する。
-
-
result を、
browser.GetUserContextsResult生成規則に一致する map とし、userContextsフィールドを user contexts に設定したものとする。 -
data result とともに success を返す。
7.2.4.5. browser.removeUserContext コマンド
browser.removeUserContext コマンドは、
beforeunload ハンドラーを実行せずに、user context およびその中のすべての navigables を閉じる。
- コマンド型
-
browser.RemoveUserContext= (method:"browser.removeUserContext",params: browser.RemoveUserContextParameters )browser.RemoveUserContextParameters= {userContext: browser.UserContext } - 戻り値型
-
browser.RemoveUserContextResult= EmptyResult
command parameters を伴う remote end steps は次である:
-
user context id を command parameters["
userContext"] とする。 -
user context id が
"default"である場合、error を error code invalid argument とともに返す。 -
user context を、user context id で get user context したものに設定する。
-
user context が null である場合、error を error code no such user context とともに返す。
-
各 top-level traversable navigable について:
-
navigable の associated user context が user context である場合:
-
navigable を閉じる。ただし prompting to unload しない。
-
-
-
user context を set of user contexts から削除する。
-
data null とともに success を返す。
7.2.4.6. browser.setClientWindowState コマンド
browser.setClientWindowState コマンドは、 client window の寸法を設定する。
- コマンド型
-
browser.SetClientWindowState= (method:"browser.setClientWindowState",params: browser.SetClientWindowStateParameters )browser.SetClientWindowStateParameters= {clientWindow: browser.ClientWindow, (browser.ClientWindowNamedState // browser.ClientWindowRectState) }browser.ClientWindowNamedState= (state:"fullscreen"/"maximized"/"minimized")browser.ClientWindowRectState= (state:"normal", ?width: js-uint, ?height: js-uint, ?x: js-int, ?y: js-int, ) - 戻り値型
-
browser.SetClientWindowStateResult= browser.ClientWindowInfo
session および command parameters を伴う remote end steps は次である:
-
実装が client window state の設定をまったくサポートしていない場合、 unsupported operation の error code を持つ error を返す。
-
command parameters["
clientWindow"] の client window id を持つ client window が存在する場合、client window をその client window とする。 そうでなければ、no such client window の error code を持つ error を返す。 -
client window および command parameters["
state"] で set the client window state することを試みる。 -
command parameters["
state"] が "normal" である場合:-
command parameters が "
x" を含み、かつ実装が client windows の位置指定をサポートする場合、client window の x-coordinate を、 command parameters["x"] に可能な限り近い値に設定する。 -
command parameters が "
y" を含み、かつ実装が client windows の位置指定をサポートする場合、client window の y-coordinate を、 command parameters["y"] に可能な限り近い値に設定する。 -
command parameters が "
width" を含み、かつ実装が client windows のリサイズをサポートする場合、 client window の width を command parameters["width"] に可能な限り近い値に設定する。 -
command parameters が "
width" を含み、かつ実装が client windows のリサイズをサポートする場合、 client window の width を command parameters["width"] に可能な限り近い値に設定する。
-
-
client window info を、client window で get the client window info したものとする。
-
data client window info とともに success を返す。
注: 単純化のため、これはすべての client window 操作を 同期的なものとしてモデル化している。したがって、返される client window の寸法は、 window が新しい状態に到達した後のものになることが期待される。
7.2.4.7. browser.setDownloadBehavior コマンド
download behavior struct は、次を持つ struct である:
remote end は download behavior を持ち、これは struct であり、 default download behavior という名前の item を持つ。これは download behavior struct または null であり、さらに user context download behavior という名前の item を持つ。これは user contexts と download behavior struct の間の weak map である。
- コマンド型
-
browser.SetDownloadBehavior= (method:"browser.setDownloadBehavior",params: browser.SetDownloadBehaviorParameters )browser.SetDownloadBehaviorParameters= {downloadBehavior: browser.DownloadBehavior / null, ?userContexts: [+browser.UserContext] }browser.DownloadBehavior= { ( browser.DownloadBehaviorAllowed // browser.DownloadBehaviorDenied ) }browser.DownloadBehaviorAllowed= (type:"allowed",destinationFolder: text )browser.DownloadBehaviorDenied= (type:"denied") - 戻り値型
-
browser.SetDownloadBehaviorResult= EmptyResult
-
user context を navigable の associated user context とする。
-
download behavior の user context download behavior が user context を含む場合、download behavior の user context download behavior[user context] を返す。
session および command parameters を伴う remote end steps は次である:
-
command parameters["
downloadBehavior"] が null である場合、 download behavior を null とする。 -
そうでなければ:
-
command parameters["
downloadBehavior"]["type"] が "allowed" である場合、allowed を true とし、そうでなければ allowed を false とする。 -
command parameters["
downloadBehavior"] が "destinationFolder" を含む場合、destinationFolder を command parameters["downloadBehavior"]["destinationFolder"] とし、 そうでなければ destinationFolder を null とする。 -
download behavior を、allowed が allowed に設定され、 destinationFolder が destinationFolder に設定された download behavior struct とする。
-
-
実装が要求された download behavior をサポートしていない場合、 error を error code unsupported operation とともに返す。
-
command parameters の
userContextsフィールドが存在する場合:-
user contexts を、 command parameters["
userContexts"] で get valid user contexts することを試みた結果とする。 -
user contexts の各 user context について:
-
download behavior が null である場合、user context を download behavior の user context download behavior から削除する。
-
そうでなければ、download behavior の user context download behavior[user context] を download behavior に設定する。
-
-
-
そうでなければ、download behavior の default download behavior を download behavior に設定する。
-
data null とともに success を返す。
7.3. browsingContext モジュール
browsingContext モジュールは、navigables に関係するコマンドおよび イベントを含む。
注: 歴史的な理由により、このモジュールは
navigable ではなく
browsingContext と呼ばれ、プロトコルは navigables を指すために
context という用語を使用する。これは特にコマンドおよび
レスポンスパラメーター内のフィールドとして用いられる。
ナビゲーションの進行状況は、次の items を持つ、 不変の struct WebDriver BiDi navigation status を用いて伝達される:
- id
- ナビゲーションの navigation id、または進行する前にナビゲーションが 取り消された場合は null。
- status
-
"
canceled"、 "pending"、または "complete" のいずれかであるステータスコード。 - url
- ナビゲーションで読み込まれている URL
- suggestedFilename
- ナビゲーションがダウンロードである場合は提案されるファイル名、そうでなければ null。
- downloadedFilepath
- ナビゲーションが完了済みのダウンロードであり、ダウンロードされたファイルが 利用可能である場合は、そのダウンロードファイルの絶対ファイルパス、そうでなければ null。
- downloadResponse
- ナビゲーションがダウンロードである場合は、response、 そうでなければ null。
7.3.1. 定義
BrowsingContextCommand = (
browsingContext.Activate //
browsingContext.CaptureScreenshot //
browsingContext.Close //
browsingContext.Create //
browsingContext.GetTree //
browsingContext.HandleUserPrompt //
browsingContext.LocateNodes //
browsingContext.Navigate //
browsingContext.Print //
browsingContext.Reload //
browsingContext.SetBypassCSP //
browsingContext.SetViewport //
browsingContext.StartScreencast //
browsingContext.StopScreencast //
browsingContext.TraverseHistory
)
BrowsingContextResult= ( browsingContext.ActivateResult / browsingContext.CaptureScreenshotResult / browsingContext.CloseResult / browsingContext.CreateResult / browsingContext.GetTreeResult / browsingContext.HandleUserPromptResult / browsingContext.LocateNodesResult / browsingContext.NavigateResult / browsingContext.PrintResult / browsingContext.ReloadResult / browsingContext.SetBypassCSPResult / browsingContext.SetViewportResult / browsingContext.StartScreencastResult / browsingContext.StopScreencastResult / browsingContext.TraverseHistoryResult )BrowsingContextEvent= ( browsingContext.ContextCreated // browsingContext.ContextDestroyed // browsingContext.DomContentLoaded // browsingContext.DownloadEnd // browsingContext.DownloadWillBegin // browsingContext.FragmentNavigated // browsingContext.HistoryUpdated // browsingContext.Load // browsingContext.NavigationAborted // browsingContext.NavigationCommitted // browsingContext.NavigationFailed // browsingContext.NavigationStarted // browsingContext.UserPromptClosed // browsingContext.UserPromptOpened )
remote end は device pixel ratio overrides を持ち、これは navigables と device pixel ratio overrides の間の weak map である。 これは初期状態では空である。
注: この map は最後のセッションが終了しても クリアされない。すなわち device pixel ratio overrides はどの WebDriver セッションよりも長く存続する。
viewport dimensions は、次を持つ struct である:
viewport configuration は、次を持つ struct である:
-
viewport という名前の item。これは viewport dimensions または null である;
-
devicePixelRatio という名前の item。これは float または null である。
unhandled prompt behavior struct は、次を持つ struct である:
-
alertという名前の item。これは string または null である; -
beforeUnloadという名前の item。これは string または null である; -
confirmという名前の item。これは string または null である; -
defaultという名前の item。これは string または null である; -
fileという名前の item。これは string または null である; -
promptという名前の item。これは string または null である。
remote end は viewport overrides map を持ち、これは user contexts と viewport configuration の間の weak map である。
remote end は locale overrides map を持ち、これは navigables または user contexts と string の間の weak map である。
screen settings は
struct であり、
height という名前の
item を持つ。これは integer であり、
width という名前の item を持つ。これは integer
であり、
x という名前の item を持つ。これは integer
であり、
y という名前の item を持つ。これは integer
である。
remote end は screen settings overrides を持ち、これは struct であり、 user context screen settings という名前の item を持つ。これは user contexts と screen settings の間の weak map であり、 さらに navigable screen settings という名前の item を持つ。これは navigables と screen settings の間の weak map である。
remote end は timezone overrides map を持ち、これは navigables または user contexts と string の間の weak map である。
remote end は unhandled prompt behavior overrides map を持ち、これは user contexts と unhandled prompt behavior struct の間の weak map である。
remote end は scripting enabled overrides map を持ち、これは navigables または user contexts と boolean の間の weak map である。
リモートエンドは、ダウンロード ID マップを持つ。これは responseとダウンロード ID の間の weak map である。これは初期状態では空である。
スクリーンキャストストリームは、 トップレベル辿可能のビューポートの抽象ストリームであり、映像トラック から成り、これはトップレベル辿可能の文書のビューポートのレンダリングされた視覚出力を含み、 また任意で、トップレベル辿可能の文書の音声出力を含む 音声トラックを含む。
BiDi セッションは、スクリーンキャスト
記録マップを持つ。これはマップであり、
そのキーはUUID、値はスクリーンキャスト記録である。
これは構造体であり、
streamという名前の
項目を持ち、これはスクリーンキャストストリームであり、
pathという名前の
項目を持ち、これは文字列であり、
stateという名前の
項目を持ち、これは
"recording", "stopping", "stopped" のいずれかであり、
writeErrorという名前の
項目を持ち、これは文字列または null である。
-
以下の手順を並列に実行する:
-
mime typeを用いてrecordingのstreamの符号化を開始し、 符号化済みデータの連続するチャンクをバイト シーケンスとして生成する。 recordingのstateが "
recording" である間、 実装定義の間隔で新しいチャンクを生成する。 -
recordingについて生成された各チャンク bytes について、以下の手順を実行する:
-
bytesをrecordingのpathにあるファイルに追加する。 これが失敗した場合:
-
recordingのwriteErrorを、 書き込み失敗を説明する実装定義の文字列に設定する。
-
recordingが与えられたとして、スクリーンキャスト記録を停止する。
-
-
-
-
recordingのstateが "
recording" でないなら、 戻る。 -
recordingのstateを "
stopping" に設定する。 -
recordingについて新しいチャンクを生成することを停止し、残っている符号化済み データを最終チャンクとしてフラッシュし(スクリーンキャスト 記録を開始するの場合と同様に処理される)、 recordingのstreamからのキャプチャを停止し、 その 映像トラックと、存在する場合はその 音声トラックを解放し、その後 recordingの stateを "
stopped" に設定する。 -
recordingのstateが "
stopped" になるまで待つ。
7.3.2. 型
7.3.2.1. browsingContext.BrowsingContext 型
remote end definition
および local end definition
browsingContext.BrowsingContext = text;
各 navigable は、関連付けられた navigable id を持つ。 これは、その navigable を一意に識別する string である。これは navigable が作成されるときに暗黙的に設定される。関連付けられた WebDriver window handle を持つ navigables については、navigable id は window handle と同じでなければならない。
各 navigable は、associated storage partition も持つ。 これは、その navigable がデータを永続化するために使用する storage partition である。
各 navigable は、関連付けられた original opener も持つ。 これは、その navigable を開かせた navigable または null であり、初期状態では null に設定される。
-
navigable id が null である場合、data null とともに success を返す。
-
navigable id navigable id を持つ navigable が存在しない場合、 no such frame の error code を持つ error を返す
-
navigable を、id navigable id を持つ navigable とする。
-
data navigable とともに success を返す。
7.3.2.2. browsingContext.Info 型
browsingContext.InfoList= [*browsingContext.Info]browsingContext.Info= {children: browsingContext.InfoList / null,clientWindow: browser.ClientWindow,context: browsingContext.BrowsingContext,originalOpener: browsingContext.BrowsingContext / null,url: text,userContext: browser.UserContext, ?parent: browsingContext.BrowsingContext / null, }
browsingContext.Info 型は navigable のプロパティを表す。
TODO: これが文書順のリストを返すようにする
-
child navigables を、navigable の child navigable であるすべての navigables を含む set とする。
-
child navigables を返す。
-
navigable id を、navigable の navigable id とする。
-
parent navigable を navigable の parent とする。
-
parent navigable が null でない場合、parent id を parent navigable の navigable id とする。 そうでなければ、 parent id を null とする。
-
document を navigable の active document とする。
-
url を、document の URL が与えられたものとして URL serializer を実行した結果とする。
注: これは URL の fragment component を含む。
-
child infos を null とする。
-
max depth が null である、または max depth が 0 より大きい場合:
-
child navigables を、navigable が与えられたものとして get the child navigables したものとする。
-
max depth が null でない場合、child depth を max depth - 1 とし、そうでなければ null とする。
-
child infos を空の list に設定する。
-
child navigables の各 child navigable について:
-
info を、 child navigable、child depth および false が与えられたものとして get the navigable info した結果とする。
-
info を child infos に追加する
-
-
-
user context を navigable の associated user context とする。
-
navigable の original opener が null でない場合、 opener id を navigable の original opener の navigable id とし、 そうでなければ null とする。
-
top-level traversable を navigable の top-level traversable とする。
-
client window id を、top-level traversable に関連付けられた client window の client window id とする。
-
navigable info を、
browsingContext.Info生成規則に一致する map とし、contextフィールドを navigable id に、include parent id がtrueである場合はparentフィールドを parent id に設定し、そうでなければ未設定とし、urlフィールドを url に、userContextフィールドを user context の user context id に、originalOpenerフィールドを opener id に、childrenフィールドを child infos に、clientWindowフィールドを client window id に設定したものとする。 -
navigable info を返す。
default")と ignore cache(デフォルト: false)が
与えられたとき、await a
navigation するには:
-
navigation id を、真のランダムまたは擬似ランダムな数値に基づく UUID の文字列表現とする。
-
navigable を resource request で navigate し、source
Documentとして navigable の active document を用い、 navigation id navigation id および history handling behavior history handling を用いる。ignore cache が true である場合、 そのナビゲーションは HTTP cache からリソースを読み込んではならない。ignore cache flag がどのように機能するかを適切に指定する必要がある。これは、リソースの最初の読み込みだけが cache をバイパスするのか (すなわち、最初に cache をクリアして通常どおり進むのと同様であるか)、 または HTML parser によって直接読み込まれないリソース (例: scripts または stylesheets によって開始される読み込み)も cache をバイパスするのかを考慮する必要がある。
-
(event received, navigation status) を、 «"
navigation started", "navigation failed", "fragment navigated"» および navigation id が与えられたものとして await したものとする。 -
Assert: navigation status の id は navigation id である。
-
navigation status の status が "
complete" である場合:-
body を、
browsingContext.NavigateResult生成規則に一致する map とし、navigationフィールドを navigation id に、urlフィールドを navigation status の url が与えられたものとして URL serializer を実行した結果に設定したものとする。 -
data body とともに success を返す。
注: これは、そのナビゲーションが fragment の変更だけを 引き起こした場合である。
-
-
navigation status の status が "
canceled" である場合、 unknown error の error code を持つ error を返す。TODO: ここでエラーを扱うにはこれが正しい方法か?
-
Assert: navigation status の status は "
pending" であり、navigation id は null でない。 -
wait condition が "
committed" である場合、event name を "committed" とする。 -
そうでなく、wait condition が "
interactive" である場合、event name を "domContentLoaded" とする。 -
そうでなければ、event name を "
load" とする。 -
(event received, status) を、 «event name, "
download started", "navigation aborted", "navigation failed"» および navigation id が与えられたものとして await したものとする。 -
event received が "
navigation failed" である場合、 unknown error の error code を持つ error を返す。ここでの error により、何が失敗し、なぜ失敗したのかについて十分な情報を 表面化できているか? どの error code が望ましいか? local ends が実装定義の文字列を 解析して、実際に何が問題だったのかを把握しようとする問題は生じるか?
-
body を、
browsingContext.NavigateResult生成規則に一致する map とし、navigationフィールドを status の id に、urlフィールドを status の url が与えられたものとして URL serializer を実行した結果に設定したものとする。 -
data body とともに success を返す。
7.3.2.3. browsingContext.Locator 型
remote end definition
および local end definition
browsingContext.Locator= ( browsingContext.AccessibilityLocator / browsingContext.CssLocator / browsingContext.ContextLocator / browsingContext.InnerTextLocator / browsingContext.XPathLocator )browsingContext.AccessibilityLocator= {type:"accessibility",value: { ?name: text, ?role: text, } }browsingContext.CssLocator= {type:"css",value: text }browsingContext.ContextLocator= {type:"context",value: {context: browsingContext.BrowsingContext, } }browsingContext.InnerTextLocator= {type:"innerText",value: text, ?ignoreCase: bool ?matchType:"full"/"partial", ?maxDepth: js-uint, }browsingContext.XPathLocator= {type:"xpath",value: text }
browsingContext.Locator 型は、文書内の node を特定するための
strategy についての詳細を提供する。
7.3.2.4. browsingContext.Navigation 型
remote end definition
および local end definition
browsingContext.Navigation = text;
browsingContext.Navigation 型は、進行中の
navigation を識別する一意の string である。
TODO: HTML 仕様内の定義へリンクする。
7.3.2.5. browsingContext.Download 型
remote end 定義
および local end 定義
browsingContext.Download = text;
browsingContext.Download 型は、ダウンロードを識別する一意な文字列である。
7.3.2.6. browsingContext.NavigationInfo 型
browsingContext.BaseNavigationInfo= (context: browsingContext.BrowsingContext,navigation: browsingContext.Navigation / null,timestamp: js-uint,url: text, ?userContext: browser.UserContext, )browsingContext.NavigationInfo= { browsingContext.BaseNavigationInfo }
browsingContext.NavigationInfo 型は、進行中の navigation の詳細を提供する。
-
navigable id を、navigable の navigable id とする。
-
navigation id を navigation status の id とする。
-
timestamp を、UTC での現在の日付および時刻を表す time value とする。
-
url を navigation status の url とする。
-
user context id を、navigable の associated user context の user context id とする。
-
browsingContext.NavigationInfo生成規則に一致する map を返す。contextフィールドは navigable id に、navigationフィールドは navigation id に、timestampフィールドは timestamp に、urlフィールドは url が与えられたものとして URL serializer を実行した結果に、userContextフィールドは user context id に設定される。
7.3.2.7. browsingContext.ReadinessState 型
browsingContext.ReadinessState="none"/"interactive"/"complete"
browsingContext.ReadinessState 型は、ナビゲーションコマンドが戻る
文書読み込みの段階を表す。
7.3.2.8. browsingContext.UserPromptType 型
remote end 定義
および local end 定義
browsingContext.UserPromptType="alert"/"beforeunload"/"confirm"/"prompt";
browsingContext.UserPromptType 型は、可能なユーザー
プロンプト型を表す。
7.3.3. コマンド
7.3.3.1. browsingContext.activate コマンド
browsingContext.activate コマンドは、 指定された top-level traversable をアクティブ化し、フォーカスする。
- コマンド型
-
browsingContext.Activate= (method:"browsingContext.activate",params: browsingContext.ActivateParameters )browsingContext.ActivateParameters= {context: browsingContext.BrowsingContext } - 戻り値型
-
browsingContext.ActivateResult= EmptyResult
command parameters を伴う remote end steps は次である:
-
navigable id を command parameters["
context"] フィールドの値とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
navigable が top-level traversable でない場合、 invalid argument の error code を持つ error を返す。
-
navigable で activate a navigable した結果を返す。
-
navigable の system visibility state が visible になるように、実装固有のステップを実行する。 これが不可能である場合、error code unsupported operation を持つ error を返す。
注: これは、現在 visible である navigables を hidden にする副作用を持ち得る。
注: これは、window を最小化解除すること、または system visibility state の変更に関連するその他の副作用により、 基礎となる OS 状態を変更し得る。
-
navigable がフォーカスされていない場合、navigable に system focus を設定するための実装固有のステップを実行する。
注: これは、他の仕様で義務付けられている場合を除き、 focused area of the document を変更しない。
-
data null とともに success を返す。
7.3.3.2. browsingContext.captureScreenshot コマンド
browsingContext.captureScreenshot コマンドは、 指定された navigable の画像をキャプチャし、それを Base64 エンコードされた文字列として返す。
- コマンド型
-
browsingContext.CaptureScreenshot= (method:"browsingContext.captureScreenshot",params: browsingContext.CaptureScreenshotParameters )browsingContext.CaptureScreenshotParameters= {context: browsingContext.BrowsingContext, ?origin: ("viewport"/"document") .default "viewport", ?format: browsingContext.ImageFormat, ?clip: browsingContext.ClipRectangle, }browsingContext.ImageFormat= {type: text, ?quality: 0.0..1.0, }browsingContext.ClipRectangle= ( browsingContext.BoxClipRectangle / browsingContext.ElementClipRectangle )browsingContext.ElementClipRectangle= {type:"element",element: script.SharedReference }browsingContext.BoxClipRectangle= {type:"box",x: float,y: float,width: float,height: float } - 戻り値型
-
browsingContext.CaptureScreenshotResult= {data: text }
注: これは、結果の rect が正の width dimension および height dimension を持つことを保証する。
-
x を rect の x coordinate とする。
-
y を rect の y coordinate とする。
-
width を rect の width dimension とする。
-
height を rect の height dimension とする。
-
width が 0 未満である場合、x を x + width に設定し、 その後 width を -width に設定する。
-
height が 0 未満である場合、y を y + height に設定し、 その後 height を -height に設定する。
-
x coordinate x、y coordinate y、width dimension width および height dimension height を持つ新しい
DOMRectReadOnlyを返す。
-
rect1 を、rect1 で normalize rect したものとする。
-
rect2 を、rect2 で normalize rect したものとする。
-
x1_0 を rect1 の x coordinate とする。
-
x2_0 を rect2 の x coordinate とする。
-
x1_1 を、rect1 の x coordinate に rect1 の width dimension を加えたものとする。
-
x2_1 を、rect2 の x coordinate に rect2 の width dimension を加えたものとする。
-
x_0 を «x1_0, x2_0» の最大要素とする。
-
x_1 を «x1_1, x2_1» の最小要素とする。
-
y1_0 を rect1 の y coordinate とする。
-
y2_0 を rect2 の y coordinate とする。
-
y1_1 を、rect1 の y coordinate に rect1 の height dimension を加えたものとする。
-
y2_1 を、rect2 の y coordinate に rect2 の height dimension を加えたものとする。
-
y_0 を «y1_0, y2_0» の最大要素とする。
-
y_1 を «y1_1, y2_1» の最小要素とする。
-
x_1 が x_0 未満である場合、width を 0 とする。そうでなければ width を x_1 - x_0 とする。
-
y_1 が y_0 未満である場合、height を 0 とする。そうでなければ height を y_1 - y_0 とする。
-
x coordinate x_0、y coordinate y_0、width dimension width および height dimension height を持つ新しい
DOMRectReadOnlyを返す。
-
ratio を、document の default view が与えられたものとして determine the device pixel ratio したものとする。
-
paint width を、rect の width dimension に ratio を掛け、 最も近い整数に丸めたものとする。これにより device pixels における rect の幅と一致する。
-
paint height を、rect の height dimension に ratio を掛け、 最も近い整数に丸めたものとする。これにより device pixels における rect の高さと一致する。
-
canvas を、
widthpaint width およびheightpaint height を持つ新しいHTMLCanvasElementとする。 -
canvas context を、canvas および null で 2D context creation algorithm を実行した結果とする。
-
canvas の context mode を 2D に設定する。
-
rect により覆われる document の領域を表す framebuffer の領域を canvas context に描画することと等価な、実装固有のステップを完了する。 その際、framebuffer 内の各 pixel は canvas context 内の pixel に対応し、viewport coordinates における (rect の x coordinate, rect の y coordinate) が canvas context 内の (0,0) に対応し、(rect の x coordinate + rect の width dimension, rect の y coordinate + rect の height dimension) が (paint width, paint height) に対応するようにする。
-
canvas を返す。
-
format が null でない場合、type を format の
typeフィールドとし、quality を format のqualityフィールドとする。 -
そうでなければ、type を "image/png" とし、quality を undefined とする。
-
file を、type および quality を伴う canvas の a serialization of the bitmap as a file とする。
-
encoded string を file の forgiving-base64 encode とする。
-
data encoded string とともに success を返す。
-
origin が
"viewport"である場合:-
viewport を document の visual viewport とする。
-
viewport rect を、 x coordinate viewport の page left、y coordinate viewport の page top、width dimension viewport width、および height dimension viewport height を持つ
DOMRectReadOnlyとする。 -
data viewport rect とともに success を返す。
-
-
Assert: origin は
"document"である。 -
document element を document の document element とする。
-
document rect を、x coordinate 0、y coordinate 0、width dimension document element の scroll height、 および height dimension document element の scroll width を持つ
DOMRectReadOnlyとする。 -
data document rect とともに success を返す。
session および command parameters を伴う remote end steps は次である:
-
navigable id を、 command parameters に
contextフィールドが存在する場合はその値とし、 そうでなければ null とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
実装が何らかの理由で navigable の screenshot をキャプチャできない場合、 unsupported operation の error code を持つ error を返す。
-
document を navigable の active document とする。
-
document について、次に run the animation frame callbacks algorithm が 呼び出された直後:
これは、より明示的な方法で レンダリング更新アルゴリズムに 統合されるべきである。 [w3c/webdriver-bidi 課題 #1131]
-
origin を、command parameters に
contextフィールドが存在する場合はその値とし、そうでなければ "viewport" とする。 -
origin rect を、origin および document が与えられたものとして get the origin rectangle することを試みた結果とする。
-
clip rect を origin rect とする。
-
command parameters が "
clip" を含む場合:-
clip を command parameters["
clip"] とする。 -
最初に一致する条件の下のステップを実行する:
- clip が
browsingContext.ElementClipRectangle生成規則に一致する: -
-
environment settings を、その relevant global object の associated
Documentが document である environment settings object とする。 -
realm を、environment settings の realm execution context の Realm component とする。
-
element を、clip["
element"]、 realm および session で deserialize remote reference することを試みた結果とする。 -
element が
Elementを実装していない場合、no such element の error code を持つ error を返す。 -
element の node document が document でない場合、no such element の error code を持つ error を返す。
-
viewport rect を、"
viewport" および document が 与えられたものとして get the origin rectangle したものとする。 -
element rect を、 element について get the bounding box したものとする。
-
clip rect を、 x coordinate element rect["
x"] + viewport rect["x"]、 y coordinate element rect["y"] + viewport rect["y"]、width element rect["width"], および height element rect["height"] を持つDOMRectReadOnlyとする。
-
- clip が
browsingContext.BoxClipRectangle生成規則に一致する: -
-
clip x を、clip["
x"] に origin rect の x coordinate を加えたものとする。 -
clip y を、clip["
y"] に origin rect の y coordinate を加えたものとする。 -
clip rect を、 x coordinate clip x、 y coordinate clip y、width clip["
width"]、および height clip["height"] を持つDOMRectReadOnlyとする。
-
- clip が
-
-
注: すべての座標はここで文書の原点から測定される。
-
rect を origin rect と clip rect の rectangle intersection とする。
-
rect の width dimension が 0 である、または rect の height dimension が 0 である場合、 error code unable to capture screen を持つ error を返す。
-
canvas を、document および rect で render document to a canvas したものとする。
-
format を command parameters の
formatフィールドとする。 -
encoding result を、canvas および format で encode a canvas as Base64 することを試みた結果とする。
-
body を、
browsingContext.CaptureScreenshotResult生成規則に一致する map とし、dataフィールドを encoding result に設定したものとする。 -
data body とともに success を返す。
7.3.3.3. browsingContext.close コマンド
browsingContext.close コマンドは top-level traversable を閉じる。
- コマンド型
-
browsingContext.Close= (method:"browsingContext.close",params: browsingContext.CloseParameters )browsingContext.CloseParameters= {context: browsingContext.BrowsingContext, ?promptUnload: bool .default false } - 戻り値型
-
browsingContext.CloseResult= EmptyResult
-
navigable id を command parameters の
contextフィールドの値とする。 -
prompt unload を command parameters の
promptUnloadフィールドの値とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
Assert: navigable は null でない。
-
navigable が top-level traversable でない場合、 invalid argument の error code を持つ error を返す。
-
prompt unload が true である場合:
-
navigable を閉じる。
-
-
そうでなければ:
-
Close navigable without prompting to unload.
-
-
data null とともに success を返す。
最後の top-level traversable を閉じるときの挙動について、 未解決の議論がある。ブラウザーを閉じること、セッションを閉じること、またはこれを実装に委ねることが 期待され得る。[w3c/webdriver-bidi Issue #170]
7.3.3.4. browsingContext.create コマンド
browsingContext.create コマンドは、新しい navigable を、新しいタブまたは新しいウィンドウのいずれかに作成し、その navigable id を返す。
- コマンド型
-
browsingContext.Create= (method:"browsingContext.create",params: browsingContext.CreateParameters )browsingContext.CreateType="tab"/"window"browsingContext.CreateParameters= {type: browsingContext.CreateType, ?referenceContext: browsingContext.BrowsingContext, ?background: bool .default false, ?userContext: browser.UserContext } - 戻り値型
-
browsingContext.CreateResult= {context: browsingContext.BrowsingContext, ?userContext: browser.UserContext }
-
typeを、command parametersの
typeフィールドの値とする。 -
reference navigable idを、存在する場合はcommand parametersの
referenceContextフィールドの値、そうでなければ null とする。 -
reference navigable idが null でない場合、reference navigableを、 reference navigable idで試行してnavigable を取得する結果とする。 そうでなければ、reference navigableを null とする。
-
reference navigableが null でなく、かつトップレベル辿可能でない場合、 エラーを、エラー コードinvalid argumentで返す。
-
実装が何らかの理由で新しいトップレベル辿可能を作成できない場合、 エラーを、エラー コードunsupported operationで返す。
-
user contextを、reference navigableが null である場合は既定のユーザーコンテキスト、 そうでなければreference navigableの関連付けられたユーザー コンテキストとする。
-
user context idを、存在する場合はcommand parametersの
userContextフィールドの値、そうでなければ null とする。 -
user context idが null でない場合、user contextを、 user context idで試行してユーザーコンテキストを取得する結果に設定する。
-
user contextが null である場合、エラーを、エラーコードそのようなユーザー コンテキストはないで返す。
-
実装が何らかの理由で、トップレベル辿可能を 関連付けられたユーザーコンテキスト user context とともに新しく作成できない場合、 エラーを、エラー コードunsupported operationで返す。
-
traversableを、null と空文字列で新しいトップレベル辿可能を作成する 手順を試行し、 新しく作成された関連付けられたユーザーコンテキストをトップレベル辿可能について user context に設定する結果とする。 新しいトップレベル辿可能がどの OS ウィンドウに作成されるかは、 typeとreference navigableによって決まる:
-
command parametersの
backgroundフィールドの値が false である場合:-
activate resultを、新しく作成されたnavigableでnavigable を有効化する結果とする。
-
activate resultがエラーである場合、 activate resultを返す。
注記:
backgroundが true である場合、作成された navigable に対してフォーカス手順を呼び出してはならない。 -
-
bodyを、
contextフィールドがtraversableのnavigable IDに設定され、userContextプロパティがtraversableの 関連付けられたユーザーコンテキストのユーザー コンテキスト IDに設定された、browsingContext.CreateResult生成規則に一致するマップとする。 -
成功をデータ body とともに返す。
7.3.3.5. browsingContext.getTree コマンド
browsingContext.getTree コマンドは、指定された親自身を含む すべての子孫 navigables の tree、または親が提供されない場合はすべての top-level contexts を返す。
- コマンド型
-
browsingContext.GetTree= (method:"browsingContext.getTree",params: browsingContext.GetTreeParameters )browsingContext.GetTreeParameters= { ?maxDepth: js-uint, ?root: browsingContext.BrowsingContext, } - 戻り値型
-
browsingContext.GetTreeResult= {contexts: browsingContext.InfoList }
-
root id を、command parameters に
rootフィールドが存在する場合は その値とし、そうでなければ null とする。 -
max depth を、command parameters に
maxDepthフィールドが存在する場合はその値とし、そうでなければ null とする。 -
navigables を空の list とする。
-
root id が null でない場合、 root id が与えられたものとして get a navigable することを試みた結果を navigables に追加する。 そうでなければ、すべての top-level traversables を navigables に追加する。
-
navigables infos を空の list とする。
-
navigables の各 navigable について:
-
info を、 navigable、max depth、および true が与えられたものとして get the navigable info した結果とする。
-
info を navigables infos に追加する
-
-
body を、
browsingContext.GetTreeResult生成規則に一致する map とし、contextsフィールドを navigables infos に設定したものとする。 -
data body とともに success を返す。
7.3.3.6. browsingContext.handleUserPrompt コマンド
browsingContext.handleUserPrompt コマンドは、開いている prompt を閉じられるようにする
- コマンド型
-
browsingContext.HandleUserPrompt= (method:"browsingContext.handleUserPrompt",params: browsingContext.HandleUserPromptParameters )browsingContext.HandleUserPromptParameters= {context: browsingContext.BrowsingContext, ?accept: bool, ?userText: text, } - 戻り値型
-
browsingContext.HandleUserPromptResult= EmptyResult
session および command parameters を伴う remote end steps は次である:
-
navigable id を command parameters の
contextフィールドの値とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
accept を、 command parameters に
acceptフィールドが存在する場合はその値とし、 そうでなければ true とする。 -
userText を、 command parameters に
userTextフィールドが存在する場合はその値とし、 そうでなければ空文字列とする。 -
navigable が現在、alert の呼び出しによる simple dialog を表示している場合、 prompt を acknowledge する。
そうでなく、navigable が現在 confirm の呼び出しによる simple dialog を表示している場合、 accept が true なら肯定的に応答し、 accept が false なら否定的に応答する。
そうでなく、navigable が現在 prompt の呼び出しによる simple dialog を表示している場合、 accept が true なら文字列値 userText で応答し、accept が false なら中止する。
そうでなく、navigable が現在 prompt to unload steps の一部として prompt を表示している場合、 accept が true なら navigation を確認し、そうでなければ navigation を拒否する。
そうでなければ、no such alert の error code を持つ error を返す。
-
data null とともに success を返す。
7.3.3.7. browsingContext.locateNodes コマンド
browsingContext.locateNodes コマンドは、指定された locator に一致するすべての nodes のリストを返す。
- コマンド型
-
browsingContext.LocateNodes= (method:"browsingContext.locateNodes",params: browsingContext.LocateNodesParameters )browsingContext.LocateNodesParameters= {context: browsingContext.BrowsingContext,locator: browsingContext.Locator, ?maxNodeCount: (js-uint .ge 1), ?serializationOptions: script.SerializationOptions, ?startNodes: [ + script.SharedReference ] } - 戻り値型
-
browsingContext.LocateNodesResult= {nodes: [ * script.NodeRemoteValue ] }
-
returned nodes を空の list とする。
-
parse result を、selector が与えられたものとして parse a selector した結果とする。
-
parse result が failure である場合、invalid selector の error code を持つ error を返す。
-
context nodes の各 context node について:
-
elements を、 parse result および navigable の active document の root を用い、 scoping root context node を用いて match a selector against a tree した結果とする。
-
elements 内の各 element について:
-
-
data returned nodes とともに success を返す。
与えられた navigable、context nodes、 selector、および maximum returned node count で locate nodes using XPath するには:
注: XPath 仕様が保守されていない状態であるため、 このアルゴリズムは XPath DOM APIs への呼び出しを行うかのように記述されている。 しかしこれは、ECMAScript runtime を経由せずに、基礎となるアルゴリズムへ直接アクセスする 仕様内部の呼び出しと等価であると理解されるべきである。
-
returned nodes を空の list とする。
-
context nodes の各 context node について:
-
evaluate result を、navigable の active document 上で、引数 selector、 context node、null、 ORDERED_NODE_SNAPSHOT_TYPE、 および null を用いて evaluate を呼び出した結果とする。 これが "SyntaxError" DOMException を投げる場合、 invalid selector の error code を持つ error を返す; そうでなく、これが他の例外を投げる場合、unknown error の error code を持つ error を返す。
-
index を 0 とする。
-
length を、evaluate result から
snapshotLengthプロパティを 取得した結果とする。 -
index が length 未満である間、繰り返す:
-
node を、evaluate result を this とし、index を引数として snapshotItem を呼び出した結果とする。
-
node を returned nodes に追加する。
-
maximum returned node count が null でなく、かつ returned nodes の size が maximum returned node count に等しい場合、 data returned nodes とともに success を返す。
-
index を index + 1 に設定する。
-
-
-
data returned nodes とともに success を返す。
-
selector が空文字列である場合、 invalid selector の error code を持つ error を返す。
-
returned nodes を空の list とする。
-
ignore case が false である場合、search text を selector とする。そうでなければ、 search text を、Unicode Default Case Conversion algorithm に従って、 selector で toUppercase した結果とする。
-
context nodes 内の各 context node について:
-
context node が
DocumentまたはDocumentFragmentを実装している場合:注: document または document fragment をたどるとき、
documentとdocument.documentElementで検索結果が等価になるように、max depthは意図的に減らされない。 -
context node が
HTMLElementを実装していない場合、continue する。 -
node inner text を、 context node を this 値として innerText getter steps を呼び出した結果とする。
-
ignore case が false である場合、node text を node inner text とする。そうでなければ、 node text を、Unicode Default Case Conversion algorithm に従って、 node inner text で toUppercase した結果とする。
-
search text が node text の code point substring である場合、 次のステップを実行する:
-
child nodes を空の list とし、 context node の children 内の各 node child について:
-
child を child nodes に追加する。
-
-
child nodes の size が 0 に等しい、または max depth が 0 に等しい場合、 次のステップを実行する:
-
そうでなければ、次のステップを実行する:
-
max depth が null である場合、child max depth を null とし、 そうでなければ max depth - 1 とする。
-
child node matches を、 child nodes、selector、child max depth、match type、 ignore case、および maximum returned node count で locate nodes using inner text した結果とする。
-
child node matches の size が 0 に等しく、かつ match type が
"partial"である場合、context node を returned nodes に追加する。そうでなければ、 child node matches で returned nodes を 拡張する。
-
-
-
-
maximum returned node count が null でない場合、returned nodes 内で index が maximum returned node count 以上であるすべての entries を削除する。
-
data returned nodes とともに success を返す。
-
returned nodes が null である場合:
-
returned nodes を空の list に設定する。
-
-
context nodes 内の各 context node について:
-
match を true とする。
-
context node が
Elementを実装している場合:-
selector が "
role" を含む場合:-
role を context node の computed role とする。
-
selector["
role"] が role でない場合:-
match を false に設定する。
-
-
-
selector が "
name" を含む場合:-
name を context node の accessible name とする。
-
selector["
name"] が name でない場合:-
match を false に設定する。
-
-
-
-
そうでなければ、match を false に設定する。
-
match が true である場合:
-
child nodes を空の list とし、 context node の children 内の各 node child について:
-
child nodes、 selector、maximum returned node count、および returned nodes で collect nodes using accessibility attributes することを試みる。
-
-
returned nodes を返す。
-
selector が "
role" を含まず、 かつ selector が "name" を含まない場合、 invalid selector の error code を持つ error を返す。 -
context nodes、 selector、maximum returned node count、および null で collect nodes using accessibility attributes した結果を返す。
-
navigable id を command parameters["
context"] とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
Assert: navigable は null でない。
-
realm を、 navigable の navigable id および null で get a realm from a navigable することを試みた結果とする。
-
locator を command parameters["
locator"] とする。 -
command parameters が "
startNodes" を含む場合、 start nodes parameter を command parameters["startNodes"] とする。 そうでなければ、start nodes parameter を null とする。 -
command parameters が "
maxNodeCount" を含む場合、 maximum returned node count を command parameters["maxNodeCount"] とする。 そうでなければ、maximum returned node count を null とする。 -
context nodes を空の list とする。
-
start nodes parameter が null である場合、navigable の active document を context nodes に追加する。 そうでなければ、start nodes parameter 内の各 serialized start node について:
-
start node を、 serialized start node、realm、および session が与えられたものとして deserialize shared reference することを試みた結果とする。
-
start node を context nodes に追加する。
-
-
context nodes の size が 0 より大きいことを Assert する。
-
type を locator["
type"] とする。 -
次の条件と関連するステップのリストにおいて、関連する条件が true である最初の ステップセットを実行する:
- type が文字列 "
css" である -
-
selector を locator["
value"] とする。 -
result nodes を、navigable、context nodes、 selector、および maximum returned nodes が与えられたものとして locate nodes using css することを試みた結果とする。
-
- type が文字列 "
xpath" である -
-
selector を locator["
value"] とする。 -
result nodes を、navigable、context nodes、 selector、および maximum returned nodes が与えられたものとして locate nodes using xpath することを試みた結果とする。
-
- type が文字列 "
innerText" である -
-
selector を locator["
value"] とする。 -
locator が
maxDepthを含む場合、max depth を locator["maxDepth"] とする。そうでなければ、max depth を null とする。 -
locator が
ignoreCaseを含む場合、 ignore case を locator["ignoreCase"] とする。そうでなければ、ignore case を false とする。 -
locator が
matchTypeを含む場合、 match type を locator["matchType"] とする。そうでなければ、match type を "full" とする。 -
result nodes を、 context nodes、selector、max depth、 match type、 ignore case および maximum returned node count が与えられたものとして locate nodes using inner text することを試みた結果とする。
-
- type が文字列 "
accessibility" である -
-
selector を locator["
value"] とする。 -
result nodes を、 context nodes、selector、および maximum returned node count が与えられたものとして locate nodes using accessibility attributes したものとする。
-
- type が文字列 "
context" である -
-
start nodes parameter が null でない場合、 error code "
invalid argument" を持つ error を返す。 -
selector を locator["
value"] とする。 -
context id を selector["
context"] とする。 -
child navigable を、 context id で get a navigable することを試みた結果とする。
-
child navigable の parent が navigable でない場合、 error code "
invalid argument" を持つ error を返す。 -
result nodes を、child navigable が与えられたものとして locate the container element したものとする。
-
Assert: result nodes 内の各 node について、 node の node navigable は navigable である。
-
- type が文字列 "
-
Assert: maximum returned node count は null である、または result nodes の size は maximum returned node count 以下である。
-
command parameters が "
serializationOptions" を含む場合、 serialization options を command parameters["serializationOptions"] とする。 そうでなければ、serialization options を、 フィールドを既定値に設定したscript.SerializationOptions生成規則に一致する map とする。 -
result ownership を "none" とする。
-
serialized nodes を空の list とする。
-
result nodes 内の各 result node について:
-
serialized node を、 result node、serialization options、result ownership、 serialization internal map としての新しい map、 realm および session で serialize as a remote value した結果とする。
-
serialized node を serialized nodes に追加する。
-
-
result を、
browsingContext.LocateNodesResult生成規則に一致する map とし、nodesフィールドを serialized nodes に設定したものとする。 -
data result とともに success を返す。
7.3.3.8. browsingContext.navigate コマンド
browsingContext.navigate コマンドは、 navigable を指定された URL へナビゲートする。
- コマンド型
-
browsingContext.Navigate= (method:"browsingContext.navigate",params: browsingContext.NavigateParameters )browsingContext.NavigateParameters= {context: browsingContext.BrowsingContext,url: text, ?wait: browsingContext.ReadinessState, } - 戻り値型
-
browsingContext.NavigateResult= {navigation: browsingContext.Navigation / null,url: text, }
-
navigable id を command parameters の
contextフィールドの値とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
Assert: navigable は null でない。
-
wait condition を "
committed" とする。 -
command parameters が
waitを含み、 かつ command parameters[wait] が "none" でない場合、 wait condition を command parameters[wait] に設定する。 -
url を command parameters の
urlフィールドの値とする。 -
document を navigable の active document とする。
-
base を document の base URL とする。
-
url record を、base URL base で url に URL parser を適用した結果とする。
-
url record が failure である場合、invalid argument の error code を持つ error を返す。
-
request を、URL が url record である新しい request とする。
-
navigable、 request および wait condition で await a navigation した結果を返す。
7.3.3.9. browsingContext.print コマンド
browsingContext.print コマンドは、 document のページ分割された表現を作成し、それを Base64 エンコードされた文字列として表される PDF document として返す。
- コマンド型
-
browsingContext.Print= (method:"browsingContext.print",params: browsingContext.PrintParameters )browsingContext.PrintParameters= {context: browsingContext.BrowsingContext, ?background: bool .default false, ?margin: browsingContext.PrintMarginParameters, ?orientation: ("portrait"/"landscape") .default "portrait", ?page: browsingContext.PrintPageParameters, ?pageRanges: [*(js-uint / text)], ?scale: (0.1..2.0) .default 1.0, ?shrinkToFit: bool .default true, }browsingContext.PrintMarginParameters= { ?bottom: (float .ge 0.0) .default 1.0, ?left: (float .ge 0.0) .default 1.0, ?right: (float .ge 0.0) .default 1.0, ?top: (float .ge 0.0) .default 1.0, } ; Minimum size is 1pt x 1pt. Conversion follows from ; https://www.w3.org/TR/css3-values/#absolute-lengthsbrowsingContext.PrintPageParameters= { ?height: (float .ge 0.0352) .default 27.94, ?width: (float .ge 0.0352) .default 21.59, } - 戻り値型
-
browsingContext.PrintResult= {data: text }
sessionおよびcommand parametersを伴うリモートエンド手順は次のとおりである:
-
navigable idを、command parametersの
contextフィールドの値とする。 -
navigableを、navigable idで試行してnavigable を取得する 結果とする。
-
実装が何らかの理由でnavigableのページ分割された表現を提供できない場合、 エラーを、エラーコード unsupported operationで返す。
-
marginを、存在する場合はcommand parametersの
marginフィールドの値、そうでなければ フィールドが既定値に設定されたbrowsingContext.PrintMarginParametersに一致する マップとする。 -
page sizeを、存在する場合はcommand parametersの
pageフィールドの値、そうでなければ フィールドが既定値に設定されたbrowsingContext.PrintPageParametersに一致する マップとする。
注記: 最小ページサイズは 1 ポイントであり、これは 絶対長に従うと (2.54 / 72) cm である。
-
page rangesを、存在する場合は command parametersの
pageRangesフィールドの値、そうでなければ空のリストとする。 -
documentを、navigableのアクティブ文書とする。
-
documentに対するアニメーションフレームコールバックを実行する アルゴリズムの次の呼び出しの直後に:
これは、より明示的な方法で レンダリング更新アルゴリズムに統合される べきである。 [w3c/webdriver-bidi 課題 #1131]
-
pdf dataを、UA 固有の手順を実行してdocumentの ページ分割された表現を生成した結果とする。このとき、CSS のメディア型は
printに設定され、PDF として符号化され、以下の用紙設定を用いる:プロパティ 値 幅(cm) command parameters[" orientation"] が "portrait" である場合はpage size["width"]、 そうでなければpage size["height"]高さ(cm) command parameters[" orientation"] が "portrait" である場合はpage size["height"]、 そうでなければpage size["width"]上余白(cm) margin[" top"]下余白(cm) margin[" bottom"]左余白(cm) margin[" left"]右余白(cm) margin[" right"]加えて、UA は以下の整形ヒントを適用するべきである:
- command parameters["
scale"] が1と等しくない場合: - コンテンツのサイズをcommand
parameters["
scale"] 倍でズームする - command parameters["
background"] が false である場合: - 背景画像の出力を抑制する
- command parameters["
shrinkToFit"] が true である場合: - コンテンツ内で指定されたページ幅を上書きし、ページ幅に合わせてコンテンツのサイズを変更する
- command parameters["
-
page rangesが空でない場合、 pagesを、page rangesおよびpdf dataに含まれるページ数で 試行してページ範囲をパースする結果とし、その後、1 から始まるインデックスが pagesに含まれないページをpdf dataから除去する。
-
encoding resultを、pdf dataに対して Base64 Encodeを呼び出した結果とする。
-
encoded dataを、encoding resultの data とする。
-
bodyを、
dataフィールドがencoded dataに設定されたbrowsingContext.PrintResult生成規則に一致する マップとする。 -
成功をデータ body とともに返す。
-
7.3.3.10. browsingContext.reload コマンド
browsingContext.reload コマンドは navigable を再読み込みする。
- コマンド型
-
browsingContext.Reload= (method:"browsingContext.reload",params: browsingContext.ReloadParameters )browsingContext.ReloadParameters= {context: browsingContext.BrowsingContext, ?ignoreCache: bool, ?wait: browsingContext.ReadinessState, } - 戻り値型
-
browsingContext.ReloadResult= browsingContext.NavigateResult
-
navigable id を command parameters の
contextフィールドの値とする。 -
navigable を、navigable id で get a navigable することを試みた結果とする。
-
Assert: navigable は null でない。
-
ignore cache を、command parameters に
ignoreCacheフィールドが存在する場合はその値とし、 そうでなければ false とする。 -
wait condition を "
committed" とする。 -
command parameters が
waitを含み、 かつ command parameters[wait] が "none" でない場合、 wait condition を command parameters[wait] に設定する。 -
document を navigable の active document とする。
-
url を document の URL とする。
-
request を、URL が url である新しい request とする。
-
navigable、 request、wait condition、history handling "
reload"、および ignore cache ignore cache で await a navigation した結果を返す。
7.3.3.11. browsingContext.setBypassCSP コマンド
browsingContext.setBypassCSP コマンドは、 Content Security Policy の適用をバイパスできるようにする。
注: CSP bypass が有効である場合、 eval()、new Function()、inline scripts、および resource loading を通常ブロックするものを含め、 すべての CSP directives がバイパスされる。
- コマンド型
-
browsingContext.SetBypassCSP= (method:"browsingContext.setBypassCSP",params: browsingContext.SetBypassCSPParameters )browsingContext.SetBypassCSPParameters= {bypass: true / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値型
-
browsingContext.SetBypassCSPResult= EmptyResult
remote end は bypass CSP configuration を持ち、これは associated type boolean を持つ WebDriver configuration である。
navigable navigable が与えられたとき、 WebDriver BiDi CSP is bypassed steps は次である:
-
top-level traversable を navigable の top-level traversable とする。
-
bypass CSP enabled を、top-level traversable についての bypass CSP configuration の get WebDriver configuration value の結果とする。
-
Assert: bypass CSP enabled は
trueまたは unset である。 -
bypass CSP enabled が unset である場合、false を返す。
-
true を返す。
command parameters が与えられたときの remote end steps は次である:
-
bypass を command parameters["
bypass"] とする。 -
bypass が null である場合、bypass を unset に設定する。
-
command parameters について、 bypass CSP configuration bypass を store WebDriver configuration することを試みる。
-
data null とともに success を返す。
7.3.3.12. browsingContext.setViewport コマンド
browsingContext.setViewport コマンドは、指定された top-level traversable 上の特定の viewport 特性(例: viewport width および viewport height)を変更する。
- コマンド型
-
browsingContext.SetViewport= (method:"browsingContext.setViewport",params: browsingContext.SetViewportParameters )browsingContext.SetViewportParameters= { ?context: browsingContext.BrowsingContext, ?viewport: browsingContext.Viewport / null, ?devicePixelRatio: (float .gt 0.0) / null, ?userContexts: [+browser.UserContext], }browsingContext.Viewport= {width: js-uint,height: js-uint, } - 戻り値型
-
browsingContext.SetViewportResult= EmptyResult
-
device pixel ratio が null でない場合:
-
指定された navigable に現在読み込まれている document について:
-
select an image source from a source set steps が実行されるとき、画像を選択する際に 実装の pixel density が device pixel ratio に設定されたかのように振る舞う。
-
resolution media feature の目的では、 実装の resolution が page zoom によってスケールされた device pixel ratio dppx であるかのように振る舞う。
-
-
device pixel ratio overrides[navigable] を device pixel ratio に設定する。
注: これは § 8.3.1 Determine the device pixel ratio のパッチにより効果を持つ。
-
-
そうでなければ:
-
指定された navigable に現在読み込まれている document について:
-
select an image source from a source set steps が実行されるとき、 これらのステップの以前の呼び出しによって行われた変更なしに、 実装の既定の挙動を使用する。
-
resolution media feature の目的では、 これらのステップの以前の呼び出しによって行われた変更なしに、 実装の既定の挙動を使用する。
-
-
device pixel ratio overrides から navigable を削除する。
-
-
指定された navigable に現在読み込まれている document について evaluate media queries and report changes を実行する。
-
viewport が null でない場合、navigable の layout viewport の width を CSS pixels における viewport の width に設定し、 navigable の layout viewport の height を CSS pixels における viewport の height に設定する。
-
そうでなければ、navigable の layout viewport を 実装定義の既定値に設定する。
新しい navigable navigable に document を作成した後、かつ run WebDriver BiDi preload scripts algorithm が 呼び出される前:
TODO: 代わりに html spec の hook として移動する。
-
user context を navigable の associated user context とする。
-
navigable が top-level traversable である場合:
-
navigable について Update geolocation override する。
-
navigable について Update emulated forced colors theme する。
-
screen orientation overrides map が user context を含む場合、 navigable および screen orientation overrides map[user context] で set emulated screen orientation する。
-
-
viewport overrides map が user context を含む場合:
-
navigable が top-level traversable であり、かつ viewport overrides map[user context] の viewport が null でない場合:
-
navigable および viewport overrides map[user context] の viewport で Set viewport する。
-
-
viewport overrides map[user context] の devicePixelRatio が null でない場合:
-
navigable および viewport overrides map[user context] の devicePixelRatio で Set device pixel ratio override する。
-
-
-
navigable について Update scrollbar type override する。
command parameters を伴う remote end steps は次である:
-
実装が何らかの理由で、指定された command parameters を用いて layout viewport parameters を調整できない場合、 unsupported operation の error code を持つ error を返す。
-
command parameters が "
userContexts" を含み、 かつ command parameters が "context" を含む場合、 invalid argument の error code を持つ error を返す。 -
navigables を set とする。
-
command parameters の
contextフィールドが存在する場合:-
navigable id を command parameters の
contextフィールドの値とする。 -
navigable を、 navigable id で get a navigable することを試みた結果とする。
-
navigable が top-level traversable でない場合、 invalid argument の error code を持つ error を返す。
-
navigable を navigables に追加する。
-
-
そうでなく、command parameters の
userContextsフィールドが存在する場合:-
user contexts を、 command parameters["
userContexts"] で get valid user contexts することを試みた結果とする。 -
user contexts の各 user context について:
-
viewport overrides map[user context] を struct に設定する。
-
command parameters が "
viewport" を含む場合:-
viewport overrides map[user context] の viewport を command parameters["
viewport"] に設定する。
-
-
command parameters が "
devicePixelRatio" を含む場合:-
viewport overrides map[user context] の devicePixelRatio を command parameters["
devicePixelRatio"] に設定する。
-
-
For each user context が associated user context である すべての top-level traversables のリストの 各 top-level traversable について:
-
top-level traversable を navigables に追加する。
-
-
-
-
そうでなければ、invalid argument の error code を持つ error を返す。
-
command parameters が
viewportフィールドを含む場合:-
viewport を command parameters["
viewport"] とする。 -
navigables の各 navigable について:
-
navigable および viewport で Set viewport する。
-
navigable の active document で CSSOM View § 13.1 Resizing viewports steps を実行する。
-
-
-
command parameters が
devicePixelRatioフィールドを含む場合:-
device pixel ratio を command parameters["
devicePixelRatio"] とする。 -
navigables の各 navigable について:
-
navigable およびすべての descendant navigables について:
-
navigable および device pixel ratio で Set device pixel ratio override する。
-
-
-
-
data null とともに success を返す。
7.3.3.13. browsingContext.startScreencast コマンド
browsingContext.startScreencast コマンドは、 指定された navigable のスクリーンキャストを開始し、それをファイルに書き込む。
注記: リモートエンドは スクリーンキャストファイルを作成して書き込むが、それを削除しない。 ファイルのクリーンアップはローカルエンドに委ねられる。いくつかの構成では、これは 不可能かもしれない — たとえば、リモートエンドが ファイルシステムへの読み書きアクセス権を持つが、 ローカルエンドは読み取り専用アクセス権しか持たない場合である。
- コマンド型
-
browsingContext.StartScreencast= (method:"browsingContext.startScreencast",params: browsingContext.StartScreencastParameters )browsingContext.StartScreencastParameters= {context: browsingContext.BrowsingContext, ?mimeType: text, ?video: browsingContext.MediaTrackConstraints, ?audio: bool .default false, }browsingContext.MediaTrackConstraints= { ?width: js-uint, ?height: js-uint, ?frameRate: js-uint, } - 戻り値型
-
browsingContext.StartScreencastResult= {screencast: browsingContext.Screencast,path: text }browsingContext.Screencast= text
-
navigable id を command parameters["
context"] とする。 -
navigable を、navigable id で navigable を 取得することを 試行する結果とする。
-
navigable が トップレベルトラバーサブルでない場合、エラーを エラーコード invalid argument で返す。
-
command parameters が
mimeTypeフィールドを 含む場合:-
mime type を command parameters["
mimeType"] とする。
-
-
それ以外の場合、mime type を実装定義のデフォルト形式に設定する。
-
何らかの理由で実装が navigable のスクリーンキャストを記録できない場合、エラーを エラー コード unsupported operation で返す。
-
stream を、navigable 用の新しい スクリーンキャストストリームとし、次のように構築する:
-
ブラウザーの表示サーフェス、 すなわち関連するグローバルオブジェクトの関連付けられた `Document` の navigable の ビューポートのライブキャプチャでなければならない video track を作成する。
-
command parameters が "
video" を含む場合:-
video を command parameters["
video"] とする。 -
video が
widthを含む場合:-
ユーザーエージェントは、ハードウェアの能力 および指定されたその他の制約を考慮して、video["
width"] に 可能な限り近い幅を持つメディアの取得を試みなければならない。
-
-
video が
heightを含む場合:-
ユーザーエージェントは、ハードウェアの能力 および指定されたその他の制約を考慮して、video["
height"] に 可能な限り近い高さを持つメディアの取得を試みなければならない。
-
-
video が
frameRateを含む場合:-
ユーザーエージェントは、ハードウェアの能力 および指定されたその他の制約を考慮して、video["
frameRate"] に 可能な限り近いフレームレートを持つメディアの取得を試みなければならない。
-
-
-
video track を stream[video track] に設定する。
-
command parameters["
audio"] が true である場合:-
関連するグローバルオブジェクトの関連付けられた `Document` の navigable の アクティブ文書、および関連するグローバルオブジェクトの関連付けられた `Document` の navigable の入れ子の閲覧コンテキスト内にあるすべてのアクティブ文書 からなる文書群の和によって生成される結合音声を含む audio track を作成する。
-
audio track を stream[audio track] に設定する。
-
-
実装が stream を生成できない場合、エラーを エラーコード unknown error で返す。
-
-
path を、記録が保存される実装定義のファイルパスとする。
-
screencast を UUID の文字列表現とする。
-
recording を、スクリーンキャスト記録である新しいものとし、 stream は stream、 path は path、 state は "
recording"、 writeError は null とする。 -
session の スクリーンキャスト記録マップ[screencast] を recording に設定する。
-
recording および mime type が与えられたものとして、スクリーンキャスト記録を開始する。
-
body を、
screencastフィールドが screencast に設定され、pathフィールドが path に設定されたbrowsingContext.StartScreencastResultに一致する新しいマップとする。 -
body をデータとして 成功を返す。
7.3.3.14. browsingContext.stopScreencast コマンド
browsingContext.stopScreencast コマンドは、 スクリーンキャストを停止する。
- コマンド型
-
browsingContext.StopScreencast= (method:"browsingContext.stopScreencast",params: browsingContext.StopScreencastParameters )browsingContext.StopScreencastParameters= {screencast: browsingContext.Screencast } - 戻り値型
-
browsingContext.StopScreencastResult= {path: text, ?error: text }
-
screencastを、command parameters内の "
screencast" フィールドの値とする。 -
sessionのスクリーンキャスト記録マップが screencastを含まない場合、エラーをエラーコード そのような スクリーンキャストはないで返す。
-
screencast recordingを、sessionのスクリーンキャスト 記録マップ[screencast]とする。
-
screencast recordingが与えられたとして、スクリーンキャスト記録を停止する。
-
screencastをsessionのスクリーンキャスト記録マップから除去する。
-
errorをscreencast recordingのwriteErrorとする。
-
pathをscreencast recordingのpathとする。
-
bodyを、
pathフィールドがpathに設定され、 errorが null でない場合はerrorフィールドが errorに設定され、そうでなければ省略された、browsingContext.StopScreencastResultに一致する新しいマップとする。 -
成功をデータ body とともに返す。
7.3.3.15. browsingContext.traverseHistory コマンド
browsingContext.traverseHistory コマンドは、 指定された navigable の履歴を delta だけ走査する。
- コマンド型
-
browsingContext.TraverseHistory= (method:"browsingContext.traverseHistory",params: browsingContext.TraverseHistoryParameters )browsingContext.TraverseHistoryParameters= {context: browsingContext.BrowsingContext,delta: js-int, } - 戻り値型
-
browsingContext.TraverseHistoryResult= EmptyResult
-
navigableを、command parameters["
context"]で試行してnavigable を取得する 結果とする。 -
navigableがトップレベル辿可能でない場合、エラーを エラーコード invalid argumentで返す。
-
表明:navigableは null でない。
-
deltaをcommand parameters["
delta"]とする。 -
resume idを一意な文字列とする。
-
navigableのセッション履歴走査キュー上で、以下の手順を実行するタスクをキューする:
-
all stepsを、navigableについて使用されているすべての履歴ステップを取得する結果とする。
-
current indexを、all steps内におけるnavigableの現在のセッション履歴ステップのインデックスとする。
-
target indexを、current indexにdeltaを加えたものとする。
-
valid entryを、all steps[target index]が存在しない場合は false、 そうでなければ true とする。
-
"
check history"、resume id、および valid entryで再開する。
-
-
is valid entryを、«"
check history"» および resume idでawaitしたものとする。 -
is valid entryが false である場合、エラーコードそのような履歴エントリーはないを伴うエラーを返す。
-
deltaおよびnavigableが与えられたとして、履歴をデルタだけ走査する。
書かれているとおりのアルゴリズムには、 競合状態がある。なぜなら、ターゲットセッション履歴エントリーにナビゲートしようとする時点で、それが 存在しない可能性があるためである。履歴のナビゲーションを待機することをサポートすれば、これを より堅牢に処理できる。
-
TODO:履歴走査の完了を待機することをサポートする。
-
bodyを、
browsingContext.TraverseHistoryResult生成規則に一致する マップとする。 -
成功をデータ body とともに返す。
context および navigation status navigation status が与えられたとき、 WebDriver BiDi page show steps は次である:
`browsingContext.pageShow event` を公開したいか?その場合、 これを bfcache restore の時だけでなく、`pageshow` が発火されようとするたびに呼び出す必要があり、 また persisted status を data に追加する必要がある。
context および navigation status navigation status が与えられたとき、 WebDriver BiDi pop state steps は次である:
7.3.4. イベント
7.3.4.1. browsingContext.contextCreated イベント
- イベント型
-
browsingContext.ContextCreated= (method:"browsingContext.contextCreated",params: browsingContext.Info )
session および navigable が与えられたとき、 Recursively emit context created events するには:
-
session および navigable で Emit a context created event する。
-
navigable の各 child navigable child について:
-
session および child が与えられたものとして Recursively emit context created events する。
-
session および navigable が与えられたとき、 Emit a context created event するには:
-
params を、navigable、0、および true が与えられたものとして get the navigable info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.ContextCreated生成規則に一致する map とする。 -
session および body で Emit an event する。
remote end event trigger は、 navigable navigable および navigable opener navigable が与えられたときの WebDriver BiDi navigable created steps である:
-
opener navigable が提供されている場合、navigable の original opener を opener navigable に設定する。
-
navigable についての navigable cache behavior が "
bypass" である場合、 navigable から発生する network requests について、実装固有の resource caches を無効にする実装定義のステップを実行する。 -
related navigables を、navigable を含む set とする。
-
"
browsingContext.contextCreated" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および navigable が与えられたものとして Emit a context created event する。
-
session、navigables および include global が与えられたとき、 subscribe priority 1 を伴う remote end subscribe steps は次である:
-
navigables 内の各 navigable について:
-
session および navigable が与えられたものとして Recursively emit context created events する。
-
7.3.4.2. browsingContext.contextDestroyed イベント
- イベント型
-
browsingContext.ContextDestroyed= (method:"browsingContext.contextDestroyed",params: browsingContext.Info )
remote end event trigger は、 navigable navigable が与えられたときの WebDriver BiDi navigable destroyed steps である:
-
params を、navigable、null、および true が与えられたものとして get the navigable info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.ContextDestroyed生成規則に一致する map とする。 -
related navigables を、navigable の parent が null でない場合はそれを含む set とし、そうでなければ空の set とする。
-
"
browsingContext.contextDestroyed" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
subscriptions to remove を空の set とする。
-
session の subscriptions 内の各 subscription について:
-
subscription の top-level traversable ids が navigable の navigable id を 含む場合:
-
navigable の navigable id を subscription の top-level traversable ids から削除する。
-
subscription の top-level traversable ids が空である場合:
-
subscription を subscriptions to remove に追加する。
-
-
-
-
subscriptions to remove を session の subscriptions から削除する。
-
このイベントを active documents を持つ browsing contexts に対してのみ発火すべきかは不明である。navigation によって、contexts が アクセス不能になるが、bfcache のためまだ破棄されないこともある。
7.3.4.3. browsingContext.navigationStarted イベント
- イベント型
-
browsingContext.NavigationStarted= (method:"browsingContext.navigationStarted",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.NavigationStarted生成規則に一致する map とする。 -
navigation id を navigation status の id とする。
-
related navigables を navigable を含む set とする。
-
"
navigation started"、navigation id、および navigation status で Resume する。 -
"
browsingContext.navigationStarted" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.4. browsingContext.fragmentNavigated イベント
- イベント型
-
browsingContext.FragmentNavigated= (method:"browsingContext.fragmentNavigated",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.FragmentNavigated生成規則に一致する map とする。 -
navigation id を navigation status の id とする。
-
related navigable を、navigable を含む set とする。
-
"
fragment navigated"、navigation id、および navigation status で Resume する。 -
"
browsingContext.fragmentNavigated" および related navigable が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.5. browsingContext.historyUpdated イベント
- イベント型
-
browsingContext.HistoryUpdated= (method:"browsingContext.historyUpdated",params: browsingContext.HistoryUpdatedParameters )browsingContext.HistoryUpdatedParameters= {context: browsingContext.BrowsingContext,timestamp: js-uint,url: text, ?userContext: browser.UserContext }
-
urlを、navigableのアクティブブラウジングコンテキストのアクティブ文書のURLが与えられたとして、URL シリアライザーを実行した結果とする。
-
user context idを、navigableの関連付けられたユーザー コンテキストのユーザー コンテキスト IDとする。
-
timestampを、UTC における現在の日付と時刻を表す時刻値とする。
-
paramsを、
urlフィールドがurlに設定され、timestampフィールドがtimestampに設定され、contextフィールドがnavigableのnavigable IDに設定され、userContextフィールドがuser context idに設定された、browsingContext.HistoryUpdatedParameters生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定されたbrowsingContext.HistoryUpdated生成規則に一致する マップとする。 -
related browsing contextsを、navigableのアクティブブラウジングコンテキストを含む集合とする。
-
"
browsingContext.historyUpdated" と related browsing contexts が与えられたとして、 イベントが有効化されている セッションの集合内の各sessionについて:-
sessionおよびbodyでイベントを 発行する。
-
7.3.4.6. browsingContext.domContentLoaded イベント
- イベント型
-
browsingContext.DomContentLoaded= (method:"browsingContext.domContentLoaded",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.DomContentLoaded生成規則に一致する map とする。 -
related navigables を、navigable を含む set とする。
-
navigation id を navigation status の id とする。
-
"
domContentLoaded"、navigation id、および navigation status で Resume する。 -
"
browsingContext.domContentLoaded" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.7. browsingContext.load イベント
- イベント型
-
browsingContext.Load= (method:"browsingContext.load",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.Load生成規則に一致する map とする。 -
related navigables を、navigable を含む set とする。
-
navigation id を navigation status の id とする。
-
"
load"、navigation id および navigation status で Resume する。 -
"
browsingContext.load" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.8. browsingContext.downloadWillBegin イベント
- イベント型
-
browsingContext.DownloadWillBegin= (method:"browsingContext.downloadWillBegin",params: browsingContext.DownloadWillBeginParams )browsingContext.DownloadWillBeginParams= {download: browsingContext.Download,suggestedFilename: text, browsingContext.BaseNavigationInfo }
-
navigation infoを、navigableおよびnavigation statusが 与えられたとしてナビゲーション 情報を取得する結果とする。
-
downloadを、UUIDの文字列表現とする。
-
設定する:ダウンロード ID マップ[navigation statusのdownloadResponse]を downloadに。
-
paramsを、
contextフィールドがnavigation info["context"]に設定され、navigationフィールドがnavigation info["navigation"]に設定され、timestampフィールドが navigation info["timestamp"]に設定され、urlフィールドが navigation info["url"]に設定され、downloadフィールドが downloadに設定され、suggestedFilenameフィールドが navigation statusのsuggestedFilenameに設定された、browsingContext.DownloadWillBeginParams生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定されたbrowsingContext.DownloadWillBegin生成規則に一致するマップとする。 -
navigation idを、navigation statusのidとする。
-
related navigablesを、navigableを含む集合とする。
-
"
download started"、navigation id、および navigation statusで再開する。 -
"
browsingContext.downloadWillBegin" と related navigables が与えられたとして、 イベントが有効化されている セッションの集合内の各sessionについて:-
sessionおよびbodyでイベントを 発行する。
-
-
download behaviorを、navigableでダウンロード動作を取得する結果とする。
-
download behaviorを返す。
7.3.4.9. browsingContext.downloadEnd イベント
- イベント型
-
browsingContext.DownloadEnd= (method:"browsingContext.downloadEnd",params: browsingContext.DownloadEndParams )browsingContext.DownloadEndParams= { ( browsingContext.DownloadCanceledParams // browsingContext.DownloadCompleteParams ) }browsingContext.DownloadCanceledParams= (status:"canceled",download: browsingContext.Download, browsingContext.BaseNavigationInfo )browsingContext.DownloadCompleteParams= (status:"complete",download: browsingContext.Download,filepath: text / null, browsingContext.BaseNavigationInfo )
-
navigation infoを、navigableおよびnavigation statusが 与えられたとしてナビゲーション 情報を取得する結果とする。
-
表明:navigation info["
status"] は "complete" または "canceled" のいずれかに等しい。 -
download responseを、navigation statusのdownloadResponseとする。
-
ダウンロード ID マップがdownload responseを含む場合、downloadを ダウンロード ID マップ[download response]とし、そうでなければdownloadを UUIDの文字列表現とする。
-
navigation info["
status"] が "complete" である場合、 paramsを、downloadフィールドが downloadに設定され、filepathフィールドが navigation statusのdownloadedFilepathに設定され、contextフィールドがnavigation info["context"]に設定され、navigationフィールドがnavigation info["navigation"]に設定され、timestampフィールドが navigation info["timestamp"]に設定され、urlフィールドが navigation info["url"]に設定された、browsingContext.DownloadCompleteParams生成規則に一致するマップとする。注記:
filepathは、 何らかの理由でファイルパスが利用できない場合、完了したダウンロードについて null になりうる。 -
そうでなければ、paramsを、
downloadフィールドが downloadに設定され、contextフィールドがnavigation info["context"]に設定され、navigationフィールドがnavigation info["navigation"]に設定され、timestampフィールドが navigation info["timestamp"]に設定され、urlフィールドが navigation info["url"]に設定された、browsingContext.DownloadCanceledParams生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定されたbrowsingContext.DownloadEnd生成規則に一致するマップとする。 -
related navigablesを、navigableを含む集合とする。
-
"
browsingContext.downloadEnd" と related navigables が与えられたとして、 イベントが有効化されている セッションの集合内の各sessionについて:-
sessionおよびbodyでイベントを 発行する。
-
7.3.4.10. browsingContext.navigationAborted イベント
- イベント型
-
browsingContext.NavigationAborted= (method:"browsingContext.navigationAborted",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.NavigationAborted生成規則に一致する map とする。 -
navigation id を navigation status の id とする。
-
related navigables を、navigable を含む set とする。
-
"
navigation aborted"、navigation id、および navigation status で Resume する。 -
"
browsingContext.navigationAborted" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.11. browsingContext.navigationCommitted イベント
- イベント型
-
browsingContext.NavigationCommitted= (method:"browsingContext.navigationCommitted",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.NavigationCommitted生成規則に一致する map とする。 -
related navigables を、navigable を含む set とする。
-
navigation id を navigation status の id とする。
-
"
navigation committed"、navigation id、および navigation status で Resume する。 -
"
browsingContext.navigationCommitted" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.12. browsingContext.navigationFailed イベント
- イベント型
-
browsingContext.NavigationFailed= (method:"browsingContext.navigationFailed",params: browsingContext.NavigationInfo )
-
params を、navigable および navigation status が与えられたものとして get the navigation info した結果とする。
-
body を、
paramsフィールドを params に設定した、browsingContext.NavigationFailed生成規則に一致する map とする。 -
navigation id を navigation status の id とする。
-
related navigables を、navigable を含む set とする。
-
"
navigation failed"、navigation id、および navigation status で Resume する。 -
"
browsingContext.navigationFailed" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.13. browsingContext.userPromptClosed イベント
- イベント型
-
browsingContext.UserPromptClosed= (method:"browsingContext.userPromptClosed",params: browsingContext.UserPromptClosedParameters )browsingContext.UserPromptClosedParameters= {context: browsingContext.BrowsingContext,accepted: bool,type: browsingContext.UserPromptType, ?userContext: browser.UserContext, ?userText: text }
Window
window、文字列 type、boolean accepted、および省略可能な text user
text
(既定値: null)が与えられたときの WebDriver
BiDi user prompt closed steps である。
-
navigable を window の navigable とする。
-
navigable id を navigable の navigable id とする。
-
user context id を、navigable の associated user context の user context id とする。
-
params を、
contextフィールドを navigable id に、userContextフィールドを user context id に、acceptedフィールドを accepted に、typeフィールドを type に設定し、かつ user text が null でなければuserTextフィールドを user text に設定し、そうでなければ省略した、browsingContext.UserPromptClosedParameters生成規則に一致する map とする。 -
body を、
paramsフィールドを params に設定した、BrowsingContextUserPromptClosedEvent生成規則に一致する map とする。 -
related navigables を、navigable を含む set とする。
-
"
browsingContext.userPromptClosed" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
7.3.4.14. browsingContext.userPromptOpened イベント
- イベント型
-
browsingContext.UserPromptOpened= (method:"browsingContext.userPromptOpened",params: browsingContext.UserPromptOpenedParameters )browsingContext.UserPromptOpenedParameters= {context: browsingContext.BrowsingContext,handler: session.UserPromptHandlerType,message: text,type: browsingContext.UserPromptType, ?userContext: browser.UserContext, ?defaultValue: text }
-
user context を navigable の associated user context とする。
-
unhandled prompt behavior overrides map が user context を含む場合:
-
unhandled prompt behavior override を unhandled prompt behavior overrides map[user context] とする。
-
unhandled prompt behavior override[type] が null でない場合、 unhandled prompt behavior override[type] を返す。
-
unhandled prompt behavior override[
"default"] が null でない場合、 unhandled prompt behavior override["default"] を返す。
-
-
handler configuration を、type で get the prompt handler したものとする。
-
handler configuration の handler を返す。
Window
window、文字列 type、文字列 message、および省略可能な text default
value
(既定値: null)が与えられたときの WebDriver
BiDi user prompt opened steps である。
-
navigable を window の navigable とする。
-
navigable id を navigable の navigable id とする。
-
user context id を、navigable の associated user context の user context id とする。
-
handler を、type および navigable で get navigable’s user prompt handler したものとする。
-
params を、
contextフィールドを navigable id に、userContextフィールドを user context id に、typeフィールドを type に、messageフィールドを message に、defaultValueフィールドを default value が null でなければ default value に設定し、 そうでなければ省略し、 かつhandlerフィールドを handler に設定した、browsingContext.UserPromptOpenedParameters生成規則に一致する map とする。 -
body を、
paramsフィールドを params に設定した、browsingContext.UserPromptOpened生成規則に一致する map とする。 -
related navigables を、navigable を含む set とする。
-
"
browsingContext.userPromptOpened" および related navigables が与えられたものとして、 set of sessions for which an event is enabled 内の各 session について:-
session および body で Emit an event する。
-
-
handler が "
ignore" である場合、handler を "none" に設定する。 -
handler を返す。
7.4. emulation モジュール
emulation モジュールは、ブラウザー API のエミュレーションに関するコマンドおよびイベントを含む。
7.4.1. 定義
EmulationCommand = (
emulation.SetForcedColorsModeThemeOverride //
emulation.SetGeolocationOverride //
emulation.SetLocaleOverride //
emulation.SetMediaFeaturesOverride //
emulation.SetNetworkConditions //
emulation.SetScreenOrientationOverride //
emulation.SetScreenSettingsOverride //
emulation.SetScriptingEnabled //
emulation.SetScrollbarTypeOverride //
emulation.SetTimezoneOverride //
emulation.SetTouchOverride //
emulation.SetUserAgentOverride //
emulation.SetViewportMetaOverride
)
EmulationResult = (
emulation.SetForcedColorsModeThemeOverrideResult /
emulation.SetGeolocationOverrideResult /
emulation.SetLocaleOverrideResult /
emulation.SetMediaFeaturesOverrideResult /
emulation.SetScreenOrientationOverrideResult /
emulation.SetScriptingEnabledResult /
emulation.SetScrollbarTypeOverrideResult /
emulation.SetTimezoneOverrideResult /
emulation.SetTouchOverrideResult /
emulation.SetUserAgentOverrideResult /
emulation.SetViewportMetaOverrideResult
)
BiDi セッションは、エミュレートされたユーザーエージェントを持つ。これは 構造体であり、 既定のユーザーエージェントという名前の 項目を持ち、これは文字列または null であり、 ユーザーコンテキストのユーザーエージェントという名前の 項目を持ち、これはユーザーコンテキストと 文字列の間の weak map であり、また navigable のユーザーエージェントという名前の 項目を持ち、これはnavigableと文字列の間の weak map である。
BiDi セッションは、エミュレートされた maxTouchPointsを持つ。これは構造体であり、 既定という名前の項目を持ち、これは整数または null であり、初期状態では null である; ユーザーコンテキストという名前の項目を持ち、これはユーザーコンテキストと整数の間の weak map であり、 初期状態では空である; また、navigableという名前の項目を持ち、これはnavigableと整数の間の weak map であり、初期状態では空である。
画面向き オーバーライドは、以下を持つ構造体である:
リモートエンドは、画面向きオーバーライドマップを持つ。これは ユーザーコンテキストと 画面 向きオーバーライドの間の weak map である。
7.4.2. コマンド
7.4.2.1. emulation.setForcedColorsModeThemeOverride コマンド
emulation.setForcedColorsModeThemeOverride コマンドは、指定されたトップレベル ナビゲータブルまたはユーザーコンテキストの 強制色モードのテーマ特性を変更する。
- コマンド型
-
emulation.SetForcedColorsModeThemeOverride= (method:"emulation.setForcedColorsModeThemeOverride",params: emulation.SetForcedColorsModeThemeOverrideParameters )emulation.SetForcedColorsModeThemeOverrideParameters= {theme: emulation.ForcedColorsModeTheme / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], }emulation.ForcedColorsModeTheme="light"/"dark" - 戻り値の型
-
emulation.SetForcedColorsModeThemeOverrideResult= EmptyResult
注記: CSS 仕様における対応する列挙型のマッピングについては、ForcedColorsModeAutomationTheme
を参照されたい。
リモートエンドは、強制色モードのテーマオーバーライド 構成を持つ。これは、 WebDriver 構成であり、関連付けられた型は文字列である。
-
themeを、navigableについて 強制色モードのテーマ オーバーライド構成のWebDriver 構成値を取得した結果とする。
-
表明: themeは"
light"、"dark"、または 未設定である。 -
themeが未設定である場合、themeを "
none"に設定する。 -
navigableおよびthemeを用いて、エミュレートされた強制色テーマデータを設定する。
command parametersを用いるリモートエンド手順は次のとおりである:
-
themeをcommand parameters["
theme"]とする。 -
themeが null の場合、themeを未設定に設定する。
-
実装がthemeの設定をサポートしていない場合、エラーをエラー コード サポートされていない操作として返す。
-
affected navigablesを、command parametersについて 強制色モードのテーマ オーバーライド構成 themeをWebDriver 構成に格納することを試行した結果とする。
-
affected navigablesの各navigableについて:
-
navigableについてエミュレートされた強制色 テーマを更新する。
-
-
データ null とともに成功を返す。
7.4.2.2. emulation.setGeolocationOverride コマンド
emulation.setGeolocationOverrideコマンドは、 指定されたトップレベルナビゲータブルまたはユーザーコンテキストの位置情報特性を変更する。
- コマンド型
-
emulation.SetGeolocationOverride= (method:"emulation.setGeolocationOverride",params: emulation.SetGeolocationOverrideParameters )emulation.SetGeolocationOverrideParameters= { ( (coordinates: emulation.GeolocationCoordinates / null) // (error: emulation.GeolocationPositionError) ), ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], }emulation.GeolocationCoordinates= {latitude: -90.0..90.0,longitude: -180.0..180.0, ?accuracy: (float .ge 0.0) .default 1.0, ?altitude: float / null .default null, ?altitudeAccuracy: (float .ge 0.0) / null .default null, ?heading: (0.0...360.0) / null .default null, ?speed: (float .ge 0.0) / null .default null, }emulation.GeolocationPositionError= {type:"positionUnavailable"} - 戻り値の型
-
emulation.SetGeolocationOverrideResult= EmptyResult
位置情報 オーバーライドは、次のものを持つ構造体である:
-
latitudeという名前の項目。これは浮動小数点数である; -
longitudeという名前の項目。これは浮動小数点数である; -
accuracyという名前の項目。これは浮動小数点数である; -
altitudeという名前の項目。これは浮動小数点数または null である; -
altitudeAccuracyという名前の項目。これは 浮動小数点数または null である; -
headingという名前の項目。これは浮動小数点数または null である; -
speedという名前の項目。これは浮動小数点数または null である。
リモートエンドは、位置情報オーバーライド構成を持つ。これは、 WebDriver 構成であり、関連付けられた型は位置情報オーバーライドである。
-
emulated position dataを、navigableについて 位置情報オーバーライド構成のWebDriver 構成値を取得した結果とする。
-
emulated position dataが未設定である場合、emulated position dataを null に設定する。
-
navigableおよびemulated position dataを用いて、エミュレートされた位置データを設定する。
command parametersを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
coordinates"を含み、 command parameters["coordinates"]が "altitudeAccuracy"を含み、 command parameters["coordinates"]が "altitude"を含まない場合、エラーをエラーコード 無効な引数として返す。 -
command parametersが "
error"を含む場合:-
command parameters["
error"]["type"]が "positionUnavailable"と等しいことを表明する。 -
emulated position dataを、GeolocationPositionError 生成規則に一致するマップとし、
codeフィールドをPOSITION_UNAVAILABLE に設定し、messageフィールドを空文字列に設定する。注記:
messageは、 位置情報仕様に従って実装によって無視される。
-
-
そうでなければ、emulated position dataをcommand parameters["
coordinates"]とする。 -
emulated position dataが null の場合、emulated position dataを 未設定に設定する。
-
affected navigablesを、command parametersについて 位置情報オーバーライド構成 emulated position dataをWebDriver 構成に格納することを試行した結果とする。
-
affected navigablesの各navigableについて:
-
navigableについて位置情報オーバーライドを更新する。
-
-
データ null とともに成功を返す。
7.4.2.3. emulation.setLocaleOverride コマンド
emulation.setLocaleOverrideコマンドは、 指定されたトップレベルナビゲータブルまたはユーザーコンテキストのロケールを変更する。
- コマンド型
-
emulation.SetLocaleOverride= (method:"emulation.setLocaleOverride",params: emulation.SetLocaleOverrideParameters )emulation.SetLocaleOverrideParameters= {locale: text / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetLocaleOverrideResult= EmptyResult
環境設定オブジェクト environment settingsを与えたときのWebDriver BiDi エミュレート言語の手順は次のとおりである:
-
related navigablesを、 environment settingsを与えて関連する ナビゲータブルを取得した結果とする。
-
related navigablesの各navigableについて:
-
top-level traversableをnavigableの トップレベルナビゲータブルとする。
-
user contextをtop-level traversableの関連付けられた ユーザーコンテキストとする。
-
ロケールオーバーライドマップがtop-level traversableを含む場合、 ロケールオーバーライドマップ[top-level traversable]を返す。
-
ロケールオーバーライドマップがuser contextを含む場合、 ロケールオーバーライドマップ[user context]を返す。
-
-
null を返す
command parametersを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
command parametersが "
userContexts" を含まず、 かつcommand parametersが "contexts"を含まない場合、 エラーをエラー コード 無効な引数として返す。 -
emulated localeをcommand parameters["
locale"]とする。 -
emulated localeが null ではなく、IsStructurallyValidLanguageTag(emulated locale) が false を返す場合、エラーをエラー コード 無効な引数として返す。
-
navigablesを集合とする。
-
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。
-
-
そうでなければ:
-
command parametersの
userContextsフィールドが存在することを表明する。 -
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated localeが null の場合、ロケールオーバーライドマップからuser contextを削除する。
-
そうでなければ、ロケール オーバーライドマップ[user context]をemulated localeに設定する。
-
user contextが 関連付けられたユーザーコンテキストである、すべての トップレベルナビゲータブルのリストの各top-level traversableについて反復する:
-
top-level traversableをnavigablesに付加する。
-
-
-
-
navigablesの各navigableについて:
-
emulated localeが null の場合、ロケールオーバーライドマップからnavigableを削除する。
-
そうでなければ、ロケールオーバーライドマップ[navigable]を emulated localeに設定する。
-
-
データ null とともに成功を返す。
7.4.2.4. emulation.setMediaFeaturesOverride コマンド
emulation.setMediaFeaturesOverrideコマンドは、 さまざまなメディア機能の値をオーバーライドできるようにする。
- コマンド型
-
emulation.SetMediaFeaturesOverride= (method:"emulation.setMediaFeaturesOverride",params: emulation.SetMediaFeaturesOverrideParameters )emulation.SetMediaFeaturesOverrideParameters= {features: emulation.MediaFeatures / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], }emulation.MediaFeatures= { ?"any-hover":"none"/"hover"/ null, ?"any-pointer":"none"/"coarse"/"fine"/ null, ?"color": js-uint / null, ?"color-gamut":"srgb"/"p3"/"rec2020"/ null, ?"color-index": js-uint / null, ?"display-mode":"fullscreen"/"standalone"/"minimal-ui"/"browser"/"picture-in-picture"/ null, ?"dynamic-range":"standard"/"high"/ null, ?"environment-blending":"opaque"/"additive"/"subtractive"/ null, ?"forced-colors":"none"/"active"/ null, ?"grid": 0 / 1 / null, ?"horizontal-viewport-segments": js-uint / null, ?"hover":"none"/"hover"/ null, ?"inverted-colors":"none"/"inverted"/ null, ?"monochrome": js-uint / null, ?"nav-controls":"none"/"back"/ null, ?"overflow-block":"none"/"scroll"/"optional-paged"/"paged"/ null, ?"overflow-inline":"none"/"scroll"/ null, ?"pointer":"none"/"coarse"/"fine"/ null, ?"prefers-color-scheme":"light"/"dark"/ null, ?"prefers-contrast":"no-preference"/"more"/"less"/"custom"/ null, ?"prefers-reduced-data":"no-preference"/"reduce"/ null, ?"prefers-reduced-motion":"no-preference"/"reduce"/ null, ?"prefers-reduced-transparency":"no-preference"/"reduce"/ null, ?"scan":"interlace"/"progressive"/ null, ?"scripting":"none"/"initial-only"/"enabled"/ null, ?"update":"none"/"slow"/"fast"/ null, ?"vertical-viewport-segments": js-uint / null, ?"video-color-gamut":"srgb"/"p3"/"rec2020"/ null, ?"video-dynamic-range":"standard"/"high"/ null, } - 戻り値の型
-
emulation.SetMediaFeaturesOverrideResult= EmptyResult
リモートエンドは、メディア機能オーバーライド構成を持つ。 これは、 WebDriver 構成であり、関連付けられた型はマップである。
-
navigableをdocumentのノードナビゲータブルとする。
-
media features override mapを、navigableについて メディア機能オーバーライド構成のWebDriver 構成値を取得した結果とする。
-
media features override mapが未設定 ではなく、 media features override mapが nameを含む場合、 media features override map[name]を返す。
-
null を返す。
command parametersを用いるリモートエンド手順は次のとおりである:
-
media features overrideをcommand parameters["
features"]とする。 -
media features overrideが null の場合、media features overrideを 未設定に設定する。
-
media features override mapを空のマップとする。
-
media features overrideの各media featureについて:
-
media features override map[media feature["
name"]]を media feature["value"]に設定する。
-
-
実装がmedia features override map内のメディア機能のいずれのオーバーライドも サポートしていない場合、エラーをエラーコード サポートされていない操作として返す。
-
affected navigablesを、command parametersについて メディア機能オーバーライド 構成 media features override mapをWebDriver 構成に格納した結果とする。
-
affected navigablesの各navigableについて:
-
navigableまたはその子孫ナビゲータブルに現在読み込まれている各documentについて反復する:
-
documentについてメディアクエリを評価して 変更を報告する処理を実行する。
-
-
-
データ null とともに成功を返す。
7.4.2.5. emulation.setNetworkConditions コマンド
emulation.setNetworkConditionsコマンドは、 指定されたブラウジングコンテキストまたはユーザー コンテキストについて特定のネットワーク条件をエミュレートする。
- コマンド型
-
emulation.SetNetworkConditions= (method:"emulation.setNetworkConditions",params: emulation.SetNetworkConditionsParameters )emulation.SetNetworkConditionsParameters= {networkConditions: emulation.NetworkConditions / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], }emulation.NetworkConditions= emulation.NetworkConditionsOfflineemulation.NetworkConditionsOffline= {type:"offline"} - 戻り値の型
-
emulation.SetNetworkConditionsResult= EmptyResult
ネットワーク 条件を適用するには:
-
各WebSocketオブジェクトwebSocketについて:
-
realmをwebSocketの関連 Realmとする。
-
environment settingsを、 Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
environment settingsを用いたWebDriver BiDi ネットワークがオフラインである の結果が true の場合:
-
webSocketのWebSocket 接続を失敗させる。
-
-
-
各WebTransportオブジェクトwebTransportについて:
-
realmをwebSocketの関連 Realmとする。
-
environment settingsを、 Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
environment settingsを用いたWebDriver BiDi ネットワークが オフラインであるの結果が true の場合:
-
webTransportについてWebTransport をクリーンアップする。
-
-
command parametersおよび sessionを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "context"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
emulated network conditionsを null とする。
-
command parameters["
networkConditions"]が null ではなく、 command parameters["networkConditions"]["type"] が"offline"と等しい場合、emulated network conditionsを、 エミュレートされたネットワーク条件構造体の新しいものに設定し、 オフラインを true に設定する。 -
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
navigablesの各navigableについて:
-
emulated network conditionsが null の場合、sessionのエミュレートされたネットワーク 条件の ナビゲータブル ネットワーク条件からnavigableを削除する
-
そうでなければ、sessionのエミュレートされたネットワーク 条件の ナビゲータブル ネットワーク条件[navigable]を emulated network conditionsに設定する。
-
-
-
command parametersの
userContextsフィールドが存在する場合:-
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated network conditionsが null の場合、sessionのエミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件からuser contextを削除する。
-
そうでなければ、sessionのエミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件[user context] をemulated network conditionsに設定する。
-
-
-
command parametersが "
userContexts" を含まず、 かつcommand parametersが "context"を含まない場合、 sessionのエミュレートされたネットワーク条件の デフォルトネットワーク 条件をemulated network conditionsに設定する。 -
データ null とともに成功を返す。
7.4.2.6. emulation.setScreenSettingsOverride コマンド
emulation.setScreenSettingsOverrideコマンドは、 指定されたトップレベルナビゲータブルまたはユーザーコンテキストのWeb に公開される画面領域およびWeb に公開される利用可能な画面領域をエミュレートする。
- コマンド型
-
emulation.SetScreenSettingsOverride= (method:"emulation.setScreenSettingsOverride",params: emulation.SetScreenSettingsOverrideParameters )emulation.ScreenArea= {width: js-uint,height: js-uint }emulation.SetScreenSettingsOverrideParameters= {screenArea: emulation.ScreenArea / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetScreenSettingsOverrideResult= EmptyResult
ナビゲータブル navigableを与えたときのWebDriver BiDi エミュレート利用可能画面 領域の手順は次のとおりである:
-
top-level traversableをnavigableのトップレベルナビゲータブルとする。
-
user contextをtop-level traversableの関連付けられたユーザー コンテキストとする。
-
画面設定オーバーライドが top-level traversableを含む場合、 画面設定オーバーライド[top-level traversable]を返す。
-
画面設定オーバーライドが user contextを含む場合、 画面設定オーバーライド[user context]を返す。
-
null を返す
ナビゲータブル navigableを与えたときのWebDriver BiDi エミュレート総画面領域の手順は 次のとおりである:
-
top-level traversableをnavigableのトップレベルナビゲータブルとする。
-
user contextをtop-level traversableの関連付けられたユーザー コンテキストとする。
-
画面設定オーバーライドが top-level traversableを含む場合、 画面設定オーバーライド[top-level traversable]を返す。
-
画面設定オーバーライドが user contextを含む場合、 画面設定オーバーライド[user context]を返す。
-
null を返す
command parametersを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
command parametersが "
userContexts" を含まず、 かつcommand parametersが "contexts"を含まない場合、 エラーをエラー コード 無効な引数として返す。 -
emulated screen areaをcommand parameters["
screenArea"]とする。 -
emulated screen areaが null ではない場合:
-
navigablesを集合とする。
-
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
targetをナビゲータブル画面 設定とする。
-
navigablesの各navigableについて:
-
データ null とともに成功を返す。
-
-
そうでなければ:
-
command parametersの
userContextsフィールドが存在することを表明する。 -
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
targetをユーザーコンテキスト 画面設定とする。
-
user contextsの各user contextについて:
-
データ null とともに成功を返す。
-
7.4.2.7. emulation.setScreenOrientationOverride コマンド
emulation.setScreenOrientationOverrideコマンドは、 指定されたトップレベルナビゲータブルまたはユーザー コンテキストの画面の向きをエミュレートする。
- コマンド型
-
emulation.SetScreenOrientationOverride= (method:"emulation.setScreenOrientationOverride",params: emulation.SetScreenOrientationOverrideParameters )emulation.ScreenOrientationNatural="portrait"/"landscape"emulation.ScreenOrientationType="portrait-primary"/"portrait-secondary"/"landscape-primary"/"landscape-secondary"emulation.ScreenOrientation= {natural: emulation.ScreenOrientationNatural,type: emulation.ScreenOrientationType }emulation.SetScreenOrientationOverrideParameters= {screenOrientation: emulation.ScreenOrientation / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetScreenOrientationOverrideResult= EmptyResult
navigableおよび emulated screen orientationを与えてエミュレートされた 画面の向きを設定するには:
このアルゴリズムを Screen Orientation 仕様へ移動する。
-
emulated screen orientationが null の場合:
-
そうでなければ:
-
emulated orientation typeを emulated screen orientation["
type"]とする。 -
emulated orientation angleを、画面の向きの値のリストで定義される、 emulated screen orientation["
natural"]の向きを持つ画面における emulated orientation typeに関連付けられた角度とする。 -
現在の向きの角度を emulated orientation angleに設定する。
-
現在の向きの型を emulated orientation typeに設定する。
-
command parametersを用いるリモートエンド手順は次のとおりである:
-
実装が何らかの理由により、指定されたcommand parametersで画面の向きの パラメータを調整できない場合、 エラーをエラー コード サポートされていない操作として返す。
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
command parametersが "
userContexts" を含まず、 かつcommand parametersが "contexts"を含まない場合、 エラーをエラー コード 無効な引数として返す。 -
emulated screen orientationを command parameters["
screenOrientation"]とする。 -
navigablesを集合とする。
-
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。
-
-
そうでなく、command parametersの
userContextsフィールドが 存在する場合:-
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated screen orientationが null の場合、 画面の向きオーバーライド マップからuser contextを削除する。
-
そうでなければ、画面の向きオーバーライド マップ[user context]を emulated screen orientationに設定する。
-
user contextが 関連付けられたユーザーコンテキストである、すべての トップレベルナビゲータブルのリストの各top-level traversableについて反復する:
-
top-level traversableをnavigablesに付加する。
-
-
-
-
navigablesの各navigableについて:
-
user contextをnavigableの関連付けられた ユーザーコンテキストとする。
-
emulated screen orientationが null であり、画面の向きオーバーライドマップが user contextを含む場合、navigableおよび 画面の向きオーバーライド マップ[user context]を用いて、エミュレートされた画面の向きを設定する。
-
そうでなければ、navigableおよび emulated screen orientationを用いて、エミュレートされた画面の向きを設定する。
-
-
データ null とともに成功を返す。
7.4.2.8. emulation.setUserAgentOverride コマンド
emulation.setUserAgentOverrideコマンドは、 指定されたトップレベルナビゲータブル、ユーザーコンテキスト、またはグローバルに User-Agent を変更する。
- コマンド型
-
emulation.SetUserAgentOverride= (method:"emulation.setUserAgentOverride",params: emulation.SetUserAgentOverrideParameters )emulation.SetUserAgentOverrideParameters= {userAgent: text / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetUserAgentOverrideResult= EmptyResult
-
related navigablesを、 environment settingsを用いて関連する ナビゲータブルを取得した結果とする。
-
related navigablesの各navigableについて:
-
top-level navigableをnavigableのトップレベルナビゲータブルとする。
-
user contextをtop-level navigableの関連付けられた ユーザーコンテキストとする。
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたユーザーエージェントのナビゲータブルユーザー エージェントが top-level navigableを含む場合、sessionのエミュレートされたユーザーエージェントの ナビゲータブルユーザー エージェント[top-level navigable]を返す。
-
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたユーザーエージェントのユーザーコンテキストユーザー エージェント がuser contextを含む場合、sessionのエミュレートされたユーザーエージェントの ユーザーコンテキストユーザー エージェント[user context]を返す。
-
-
-
アクティブな BiDi セッション内の各sessionについて:
-
default emulated user agentをsessionのエミュレートされたユーザーエージェントの デフォルトユーザーエージェントとする。
-
default emulated user agentが null ではない場合、 default emulated user agentを返す。
-
-
null を返す。
sessionおよびcommand parametersを与えたときのリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
emulated user agentをcommand parameters["
userAgent"]とする。 -
command parametersが "
contexts"を含む場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
navigablesの各navigableについて:
-
emulated user agentが null の場合、sessionのエミュレートされたユーザーエージェントのナビゲータブルユーザー エージェントからnavigableを削除する。
-
そうでなければ、sessionのエミュレートされたユーザーエージェントの ナビゲータブルユーザー エージェント[navigable]をemulated user agentに設定する。
-
-
データ null とともに成功を返す。
-
-
command parametersが "
userContexts"を含む場合:-
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated user agentが null の場合、sessionのエミュレートされたユーザーエージェントのユーザーコンテキストユーザー エージェントからuser contextを削除する。
-
そうでなければ、sessionのエミュレートされたユーザーエージェントの ユーザーコンテキストユーザー エージェント[user context]をemulated user agentに設定する。
-
-
データ null とともに成功を返す。
-
-
sessionのエミュレートされたユーザー エージェントのデフォルトユーザーエージェントを emulated user agentに設定する。
-
データ null とともに成功を返す。
7.4.2.9. emulation.setViewportMetaOverride コマンド
emulation.setViewportMetaOverrideコマンドは、
ブラウザーが
<meta name=viewport>タグを尊重するかどうかを変更する。
- コマンド型
-
emulation.SetViewportMetaOverride= (method:"emulation.setViewportMetaOverride",params: emulation.SetViewportMetaOverrideParameters )emulation.SetViewportMetaOverrideParameters= {viewportMeta: true / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetViewportMetaOverrideResult= EmptyResult
リモートエンドは、viewport meta オーバーライド構成を持つ。 これは、 WebDriver 構成であり、関連付けられた型は boolean である。
Document documentを与えたときの WebDriver BiDi viewport meta 状態の手順は次のとおりである:
-
navigableをdocumentのノードナビゲータブルとする。
-
viewport meta overrideを、navigableについて viewport meta オーバーライド構成のWebDriver 構成値を取得した結果とする。
-
viewport meta overrideが未設定である場合、null を返す。
-
viewport meta overrideを返す。
command parametersを与えたときのリモートエンド手順は次のとおりである:
-
viewport meta overrideをcommand parameters["
viewportMeta"]とする。 -
viewport meta overrideが null の場合、viewport meta overrideを 未設定に設定する。
-
affected navigablesを、command parametersについて viewport meta オーバーライド構成 viewport meta overrideをWebDriver 構成に格納することを試行した結果とする。
-
affected navigablesの各navigableについて、指定された navigableに現在読み込まれている文書に対してメディアクエリを評価して変更を 報告する処理を実行する。
-
データ null とともに成功を返す。
7.4.2.10. emulation.setScriptingEnabled コマンド
emulation.setScriptingEnabledコマンドは、 Web ページ上で JavaScript を無効化することをエミュレートする。
- コマンド型
-
emulation.SetScriptingEnabled= (method:"emulation.setScriptingEnabled",params: emulation.SetScriptingEnabledParameters )emulation.SetScriptingEnabledParameters= {enabled: false / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetScriptingEnabledResult= EmptyResult
注記: 無効化された Javascript のエミュレーションのみが サポートされる。
-
navigableを、settingsの関連グローバルオブジェクトの 関連付けられた
Documentのノードナビゲータブルとする。 -
top-level traversableをnavigableのトップレベルナビゲータブルとする。
-
スクリプティング有効化オーバーライドマップが top-level traversableを含む場合、 スクリプティング有効化オーバーライド マップ[top-level traversable]を返す
-
user contextをtop-level traversableの関連付けられたユーザー コンテキストとする。
-
スクリプティング有効化オーバーライドマップが user contextを含む場合、 スクリプティング有効化オーバーライドマップ[user context]を返す。
-
true を返す。
command parametersを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
command parametersが "
userContexts" を含まず、 かつcommand parametersが "contexts"を含まない場合、 エラーをエラー コード 無効な引数として返す。 -
emulated scripting enabled statusをcommand parameters["
enabled"]とする。 -
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
navigablesの各navigableについて:
-
emulated scripting enabled statusが null の場合、 スクリプティング有効化オーバーライド マップからnavigableを削除する。
-
そうでなければ、スクリプティング有効化オーバーライド マップ[navigable]を emulated scripting enabled statusに設定する。
-
-
-
command parametersの
userContextsフィールドが存在する場合:-
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated scripting enabled statusが null の場合、 スクリプティング有効化オーバーライド マップからuser contextを削除する。
-
そうでなければ、スクリプティング有効化オーバーライド マップ[user context]を emulated scripting enabled statusに設定する。
-
-
-
データ null とともに成功を返す。
7.4.2.11. emulation.setScrollbarTypeOverride コマンド
emulation.setScrollbarTypeOverrideコマンドは、 指定されたトップレベルナビゲータブル、ユーザーコンテキスト、またはグローバルに スクロールバーの型を変更する。
- コマンド型
-
emulation.SetScrollbarTypeOverride= (method:"emulation.setScrollbarTypeOverride",params: emulation.SetScrollbarTypeOverrideParameters )emulation.SetScrollbarTypeOverrideParameters= {scrollbarType:"classic"/"overlay"/ null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetScrollbarTypeOverrideResult= EmptyResult
リモートエンドは、スクロールバー型オーバーライド構成を持つ。 これは、 WebDriver 構成であり、関連付けられた型は文字列である。
-
scrollbar type overrideを、navigableについて スクロールバー型オーバーライド構成のWebDriver 構成値を取得した結果とする。
-
表明: scrollbar type overrideは"
classic"、 "overlay"、または 未設定である。 -
scrollbar type overrideが"
classic"である場合、 navigableのアクティブな文書がクラシックスクロールバーを使用するように実装定義の手順を実行し、返る。 -
scrollbar type overrideが"
overlay"である場合、 navigableのアクティブな文書がオーバーレイスクロールバーを使用するように実装定義の 手順を実行し、返る。 -
表明: scrollbar type overrideは未設定である。
-
navigableのアクティブな文書が、 実装定義のデフォルトスクロールバー型を 使用するように、実装定義の手順を実行する。
command parametersを与えたときのリモートエンド手順は次のとおりである:
-
scrollbar type overrideをcommand parameters["
scrollbarType"]とする。 -
scrollbar type overrideが null の場合、scrollbar type overrideを 未設定に設定する。
-
実装がscrollbar type overrideの設定をサポートしていない場合、エラー をエラーコード サポートされていない操作として返す。
-
affected navigablesを、command parametersについて スクロールバー型オーバーライド 構成 scrollbar type overrideをWebDriver 構成に格納することを試行した結果とする。
-
affected navigablesの各navigableについて:
-
navigableについてスクロールバー型オーバーライドを更新する。
-
-
データ null とともに成功を返す。
7.4.2.12. emulation.setTimezoneOverride コマンド
emulation.setTimezoneOverrideコマンドは、 指定されたトップレベルナビゲータブルまたはユーザーコンテキストのタイムゾーンを変更する。
- コマンド型
-
emulation.SetTimezoneOverride= (method:"emulation.setTimezoneOverride",params: emulation.SetTimezoneOverrideParameters )emulation.SetTimezoneOverrideParameters= {timezone: text / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetTimezoneOverrideResult= EmptyResult
-
emulated timezoneを null とする。
-
realmを現在の Realm Recordとする。
-
environment settingsを、 Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
related navigablesを、 environment settingsを与えて関連する ナビゲータブルを取得した結果とする。
-
related navigablesの各navigableについて:
-
top-level traversableをnavigableの トップレベルナビゲータブルとする。
-
user contextをtop-level traversableの関連付けられた ユーザーコンテキストとする。
-
タイムゾーンオーバーライドマップが top-level traversableを含む場合、emulated timezoneを タイムゾーンオーバーライドマップ[top-level traversable]に設定する。
-
そうでなく、タイムゾーンオーバーライドマップが user contextを含む場合、 emulated timezoneを タイムゾーンオーバーライドマップ[user context]に設定する。
-
-
emulated timezoneが null ではない場合、emulated timezoneを返す。
-
SystemTimeZoneIdentifier仕様の 要件に従った実装定義の手順の結果を返す。
command parametersを用いるリモートエンド手順は次のとおりである:
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
command parametersが "
userContexts" を含まず、 かつcommand parametersが "contexts"を含まない場合、 エラーをエラー コード 無効な引数として返す。 -
emulated timezoneをcommand parameters["
timezone"]とする。 -
emulated timezoneが null ではなく、 IsTimeZoneOffsetString(emulated timezone)が false を返し、かつ AvailableNamedTimeZoneIdentifiersが emulated timezoneを含まない場合、エラーをエラーコード 無効な引数として返す。
-
navigablesを集合とする。
-
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。
-
-
そうでなければ:
-
command parametersの
userContextsフィールドが存在することを表明する。 -
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
emulated timezoneが null の場合、 タイムゾーンオーバーライドマップからuser contextを削除する。
-
そうでなければ、タイムゾーン オーバーライドマップ[user context]をemulated timezoneに設定する。
-
user contextが 関連付けられたユーザーコンテキストである、すべての トップレベルナビゲータブルのリストの各top-level traversableについて反復する:
-
top-level traversableをnavigablesに付加する。
-
-
-
-
navigablesの各navigableについて:
-
emulated timezoneが null の場合、タイムゾーンオーバーライドマップからnavigableを削除する。
-
そうでなければ、タイムゾーン オーバーライドマップ[navigable]をemulated timezoneに設定する。
-
-
データ null とともに成功を返す。
7.4.2.13. emulation.setTouchOverride コマンド
emulation.setTouchOverrideコマンドは、 Web ページ上で有効化されたタッチ入力をエミュレートする。
- コマンド型
-
emulation.SetTouchOverride= (method:"emulation.setTouchOverride",params: emulation.SetTouchOverrideParameters )emulation.SetTouchOverrideParameters= {maxTouchPoints: (js-uint .ge 1) / null, ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 戻り値の型
-
emulation.SetTouchOverrideResult= EmptyResult
-
related navigablesを、environment settingsを用いて関連する ナビゲータブルを取得した結果とする。
-
related navigablesの各navigableについて:
-
top-level navigableをnavigableのトップレベルナビゲータブルとする。
-
user contextをtop-level navigableの関連付けられた ユーザーコンテキストとする。
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされた maxTouchPointsの ナビゲータブルが top-level navigableを含む場合、 sessionのエミュレートされた maxTouchPointsの ナビゲータブル[top-level navigable]を返す。
-
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされた maxTouchPointsの ユーザーコンテキストが user contextを含む場合、sessionの エミュレートされた maxTouchPointsの ユーザー コンテキスト[user context]を返す。
-
-
-
アクティブな BiDi セッション内の各sessionについて:
-
emulated maxTouchPointsをsessionのエミュレートされた maxTouchPointsの デフォルトとする。
-
emulated maxTouchPointsが null ではない場合、emulated maxTouchPointsを返す。
-
-
null を返す。
sessionおよびcommand parametersを用いるリモートエンド手順は次のとおりである:
注記: 従来の従来のタッチイベント API を公開する機構があり、 これは一部の既存の Web コンテンツで、ユーザーエージェントがタッチ対応の「モバイル」デバイスであることを示すシグナルとして依然として使用されることがある。API は従来のものであるが、ユーザーエージェントはエミュレートされた maxTouchPoints状態を従来のタッチイベント API を公開する処理で尊重するために、実装定義の手順を実行する場合がある。
-
command parametersが "
userContexts"を含み、かつcommand parametersが "contexts"を含む場合、エラーをエラー コード 無効な引数として返す。 -
maxTouchPointsをcommand parameters["
maxTouchPoints"]とする。 -
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
navigablesの各navigableについて:
-
maxTouchPointsが null の場合、sessionの エミュレートされた maxTouchPointsの ナビゲータブルからnavigableを削除する。
-
そうでなければ、sessionのエミュレートされた maxTouchPointsの ナビゲータブル[navigable] をmaxTouchPointsに設定する。
-
-
データ null とともに成功を返す。
-
-
command parametersの
userContextsフィールドが存在する場合:-
user contextsを、 command parameters["
userContexts"]を用いて 有効なユーザーコンテキストを取得することを試行した結果とする。 -
user contextsの各user contextについて:
-
maxTouchPointsが null の場合、sessionの エミュレートされた maxTouchPointsの ユーザーコンテキストからuser contextを削除する。
-
そうでなければ、sessionのエミュレートされた maxTouchPointsの ユーザー コンテキスト[user context]をmaxTouchPointsに設定する。
-
-
データ null とともに成功を返す。
-
-
sessionのエミュレートされた maxTouchPointsのデフォルト をmaxTouchPointsに設定する。
-
データ null とともに成功を返す。
7.5. network モジュール
network モジュールは、ネットワークリクエストに関係するコマンドとイベントを 含む。
7.5.1. 定義
NetworkCommand = (
network.AddDataCollector //
network.AddIntercept //
network.ContinueRequest //
network.ContinueResponse //
network.ContinueWithAuth //
network.DisownData //
network.FailRequest //
network.GetData //
network.ProvideResponse //
network.RemoveDataCollector //
network.RemoveIntercept //
network.SetCacheBehavior //
network.SetExtraHeaders
)
NetworkResult= ( network.AddDataCollectorResult / network.AddInterceptResult / network.ContinueRequestResult / network.ContinueResponseResult / network.ContinueWithAuthResult / network.DisownDataResult / network.FailRequestResult / network.GetDataResult / network.ProvideResponseResult / network.RemoveDataCollectorResult / network.RemoveInterceptResult / network.SetCacheBehaviorResult / network.SetExtraHeadersResult )NetworkEvent= ( network.AuthRequired // network.BeforeRequestSent // network.FetchError // network.ResponseCompleted // network.ResponseStarted )
リモートエンドは、初期状態では
空のマップであるリクエスト送信前マップを持つ。これは、
network.beforeRequestSentイベントがすでに送信された
ネットワークイベントを追跡するために使用される。
リモートエンドは、文字列であるデフォルトキャッシュ動作を持つ。これは
初期状態では"default"である。
リモートエンドは、トップレベルナビゲータブルとキャッシュ動作を表す文字列との間の弱い マップであるナビゲータブルキャッシュ動作マップを持つ。 これは初期状態では空である。
BiDi セッションは、追加ヘッダーを持つ。これは、 既定の ヘッダーという名前の項目を持つ構造体である。 これはヘッダー リスト(初期状態では空のヘッダーリストに設定される)であり、 ユーザーコンテキストヘッダーという名前の項目を持ち、 これはユーザーコンテキストとヘッダーリストの間の weak map であり、また navigable ヘッダーという名前の項目を持ち、 これはnavigableとヘッダー リストの間の weak map である。
7.5.2. ネットワークデータ収集
ネットワークデータは、以下を持つ構造体である:
-
bytesという名前の項目。これは
network.BytesValueまたは null である。 -
collectorsという名前の項目。これは
network.Collectorのリストである。 -
pendingという名前の項目。これは boolean である。
-
sizeという名前の項目。これは js-uint または null である。
-
typeという名前の項目。これは
network.DataTypeである。
collectorは、以下を持つ構造体である:
-
最大エンコード済み項目サイズという名前の項目。これは js-uint である。
-
contextsという名前の項目。これはリストであり、navigable IDからなる。
-
データ型という名前の項目。これはリストであり、
network.DataTypeからなる。 -
collectorという名前の項目。これは
network.Collectorである。 -
collector 型という名前の項目。これは
network.CollectorTypeである。 -
ユーザーコンテキストという名前の項目。これはリストであり、
browser.UserContextからなる。
注記: 最大 エンコード済み項目サイズは項目(レスポンスまたはリクエスト)ごとの上限を定義し、 特定の collector によって収集されるサイズを制限しない。収集されるすべてのリソースの総サイズは 最大総収集サイズによって制限される。
BiDi セッションは、ネットワークコレクター
を持つ。これは、
network.Collector
とコレクターとの間のマップである。これは
初期状態では空である。
リモートエンドは、ネットワークデータのリストである収集済みネットワークデータを持つ。これは初期状態では 空である。
リモートエンドは、最大総収集サイズを持つ。これは、 収集済みネットワークデータにネットワークデータを収集するために割り当てられたサイズを表す js-uint である。その 値は実装定義である。
注記: これにより、実装はリソース使用量の 制限を設定できる。 その制限は十分に大きく、ウェブページで使用される画像やフォントなど、 ブラウザーによって完全にデコードされ処理されるデータを収集できるとユーザーが期待できるものとされる。
-
navigable を null とする。
-
request の client が environment settings object である場合:
-
environment settings を request の client とする
-
environment settings の global object が active window である navigable が存在する場合、 navigable をその navigable に設定する。
-
-
navigable を返す。
-
-
collector の contexts が navigable の navigable id を含む場合、true を返す。
-
そうでなければ、false を返す。
-
-
collector の user contexts が空でない場合:
-
user context を navigable の associated user context とする。
-
collector の user contexts が user context の user context id を含む場合、true を返す。
-
そうでなければ、false を返す。
-
-
true を返す。
-
request の body が null である場合、戻る。
-
active BiDi sessions 内の各 session について:
-
session の network collectors が空でない場合:
-
collected data を、 network data とし、 bytes を null に設定し、 cloned body を request の body の clone に設定し、 collectors を空の list に設定し、 pending を true に設定し、 request を request の request id に設定し、 size を null に設定し、 type を "request" に設定したものとする。
-
collected data を collected network data に追加する。
-
戻る。
-
-
-
response body が null である場合、戻る。
-
active BiDi sessions 内の各 session について:
-
session の network collectors が空でない場合:
-
collected data を、 network data とし、 bytes を null に設定し、 cloned body を response body の clone に設定し、 collectors を空の list に設定し、 pending を true に設定し、 request を request の request id に設定し、 size を null に設定し、 type を "response" に設定したものとする。
-
collected data を collected network data に追加する。
-
戻る。
-
-
-
collected network data の各 collected data について:
-
null を返す。
-
collected data を、request の request id および "response" で get collected data したものとする。
-
collected data が null である場合、戻る。
-
collected data の pending を false に設定する。
-
"
network data collected" および (request の request id, "response") で Resume する。
-
collected data を、request の request id および "request" で get collected data したものとする。
-
collected data が null である場合、戻る。
注: これは、request が作成されたときに collectors が設定されておらず、 WebDriver BiDi clone network request body が対応する body を clone しない場合に起こり得る。 または、そもそも body が null であった場合にも起こり得る。
-
request、collected data、null、および "request" で Maybe collect network data する。
-
response の status が redirect status である場合、戻る。
注: redirects については、最終 response body のみが保存される。
-
collected data を、request の request id および "response" で get collected data したものとする。
-
collected data が null である場合、戻る。
注: これは、response が作成されたときに collectors が設定されておらず、 WebDriver BiDi clone network response body が対応する body を clone しない場合に起こり得る。 または、そもそも body が null であった場合にも起こり得る。
-
size を、response の response body info の encoded size とする。
注: fetch stream から取得される bytes は decoded data に対応するが、size limits を計算するためには encoded (network) size が使用される、 という不一致がある。実装は、getData で clients に返される data が decoded data と同一である限り、 decoded data を保存するよりも少ない size を使用する storage model を採用してもよい。 storage と performance の潜在的な tradeoff は実装次第である。
-
request、collected data、size および "response" で Maybe collect network data する。
-
collected data の pending を false に設定する。
-
navigable を、 request で get navigable for request したものとする。
-
navigable が null である場合:
-
collected data を collected network data から削除する。
-
"
network data collected" および (request の request id, data type) で Resume する。 -
戻る。
これは navigable に関係しない data の収集を防ぐ。 collector configuration に照らして確認するために navigable を取得する必要はまだあるが、 ここで null を受け入れることもできる。
-
-
top-level navigable を navigable の top-level traversable とする。
-
collectors を空の list とする。
-
active BiDi sessions 内の各 session について:
-
session の network collectors 内の各 collector について:
-
collector の data types が data type を含み、かつ collector および top-level navigable で match collector for navigable した場合:
-
collector を collectors に追加する。
-
-
-
-
collectors が空である場合:
-
collected data を collected network data から削除する。
-
"
network data collected" および (request の request id, data type) で Resume する。 -
戻る。
-
-
bytes を null とする。
-
nullOrBytes が与えられたときの processBody を、このステップとする:
-
nullOrBytes が null でない場合:
-
bytes を、 nullOrBytes で serialize protocol bytes した結果に設定する。
-
size が null である場合、size を bytes の length に設定する。
-
-
-
processBodyError を、このステップとする: 何もしない。
-
processBody および processBodyError が与えられたものとして、collected data の cloned body を Fully read する。
-
bytes が null でない場合:
-
collectors 内の各 collector について:
-
size が collector の max encoded item size 以下である場合、 collector の collector を collected data の collectors に追加する。
-
-
collected data の collectors が空でない場合:
-
size が与えられたものとして Allocate size to record data する。
-
collected data の bytes を bytes に設定する。
-
collected data の size を size に設定する。
-
-
そうでなければ、collected data を collected network data から削除する。
-
-
"
network data collected" および (request の request id, data type) で Resume する。
-
available size を max total collected size とする。
-
already collected data を空の list とする。
-
collected network data 内の各 collected data について:
-
size が available size より大きい場合:
-
collected data の collectors が collector id を含む場合:
-
collector id を collected data の collectors から削除する。
-
collected data の collectors が空である場合:
-
collected data を collected network data から削除する。
-
-
7.5.3. ネットワークインターセプト
ネットワークインターセプト は、リモートエンドがネットワークリクエストおよびレスポンスをインターセプトし、 変更できるようにするための仕組みである。
BiDi セッションは、インターセプトマップを持つ。これは、
インターセプト ID と、アクティブなネットワークインターセプトのプロパティを定義する
url patterns、
phases、およびcontextsフィールドを持つ構造体との間のマップ
である。これは初期状態では空である。
BiDi セッションは、ブロックされたリクエスト
マップを持ち、現在アクティブにブロックされている
リクエストを追跡するために使用される。これは、リクエスト ID
と、request、phase、および
responseフィールドを持つ構造体
との間のマップである。これは初期状態では空である。
session、event、request、および navigable idが与えられたとき、ネットワーク インターセプトを取得するには:
-
session interceptsを、sessionのインターセプトマップとする。
-
interceptsを空のリストとする。
-
最初に一致する条件の下の手順を実行する:
- event is "
network.beforeRequestSent" - phaseを "
beforeRequestSent" に設定する。 - event is "
network.responseStarted" - phaseを "
responseStarted" に設定する。 - event is "
network.authRequired" - phaseを "
authRequired" に設定する。 - event is "
network.responseCompleted" - interceptsを返す。
- event is "
-
urlを、requestの URLでURL シリアライザーを実行した結果とする。
-
session interceptsの各intercept id → interceptについて:
-
interceptの
contextsが null でない場合:-
interceptの
contextsがnavigable idを含まない場合:-
続行する。
-
-
-
interceptの
phasesがphaseを含む場合:-
url patternsを、interceptの
url patternsとする。 -
url patternsが空である場合:
-
intercept idを interceptsに付加する。
-
続行する。
-
-
url patterns内の各url patternについて:
-
url patternおよびurlでURL パターンに一致する場合:
-
intercept idをinterceptsに付加する。
-
中断する。
-
-
-
-
-
interceptsを返す。
-
blocked requestsをsessionのブロックされたリクエストマップとする。
-
request idをcommand parameters["
request"]とする。 -
blocked requestsが request idを含まない場合、 エラーをエラー コード 該当するリクエストなしとして返す。
-
(request, phase, response)をblocked requests[request id]とする。
-
phaseが"
beforeRequestSent"であり、commandが "continueResponse"である場合、エラーをエラーコード "invalid argument"として返す。TODO: 別のエラーを検討する
-
responseが null の場合:
-
表明: phaseは"
beforeRequestSent"である。 -
responseを新しいレスポンスに設定する。
-
-
command parametersが "
statusCode"を含む場合:-
responsesのステータスをcommand parameters["
statusCode"]に設定する。
-
-
command parametersが "
reasonPhrase"を含む場合:-
responsesのステータスメッセージを、 command parameters["
reasonPhrase"]を用いてUTF-8 エンコードしたものに設定する。
-
-
command parametersが "
headers"を含む場合:-
headersを、 command parameters["
headers"]を用いて ヘッダーリストを作成することを試行した結果とする。 -
responseのヘッダーリストをheadersに設定する。
-
-
command parametersが "
cookies"を含む場合:-
command parametersが "
headers"を含む場合、headersを responseのヘッダーリストとする。そうでなければ:
-
command parameters["
cookies"]内の各cookieについて:-
header valueを、cookieを用いてset-cookie ヘッダーをシリアライズした 結果とする。
-
(`
Set-Cookie`, header value)を headersに付加する。 -
responseのヘッダーリストを headersに設定する。
-
-
-
command parametersが "
credentials"を含む場合:-
credentialsをcommand parameters["
credentials"]とする。 -
表明: credentials["
type"]は "password"である。 -
responseの認証資格情報を (credentials["
username"], credentials["password"]) に設定する
-
-
responseを返す
7.5.4. 型
7.5.4.1. network.AuthChallenge 型
network.AuthChallenge= {scheme: text,realm: text, }
response が与えられたとき、extract challenges するには:
-
response の status が 401 である場合、header name を `
WWW-Authenticate` とする。そうでなく、response の status が 407 である場合、 header name を `Proxy-Authenticate` とする。そうでなければ null を返す。 -
challenges を新しい list とする。
-
response の header list 内の各 (name, value) について:
Fetch と同様に、 複数 headers、parsing issues などを処理する正しい方法であるかどうかは不明である。
-
name が header name に対する byte-case-insensitive match である場合:
-
header challenges を、value を challenges の list に parse した結果とする。各 challenge は scheme および parameters の list からなり、 各 parameter は tuple (name, value) であり、[RFC9110] の規則に従う。
-
header challenges 内の各 header challenge について:
-
scheme を header challenge の scheme とする。
-
realm を空文字列とする。
-
header challenge の parameters 内の各 (param name, param value) について:
-
param name が `
realm` と等しい場合、 realm を param value で UTF-8 decode した結果とする。
-
-
challenge を、
schemefield を scheme に設定し、realmfield を realm に設定した、network.AuthChallengeproduction に一致する新しい map とする。
-
-
challenge を challenges に追加する。
-
-
-
challenges を返す。
7.5.4.2. network.AuthCredentials 型
network.AuthCredentials= {type:"password",username: text,password: text, }
network.AuthCredentials 型は、authorization credentials に対する
request への response を表す。
7.5.4.3. network.BaseParameters 型
network.BaseParameters= (context: browsingContext.BrowsingContext / null,isBlocked: bool,navigation: browsingContext.Navigation / null,redirectCount: js-uint,request: network.RequestData,timestamp: js-uint, ?userContext: browser.UserContext / null, ?intercepts: [+network.Intercept] )
network.BaseParameters 型は、すべての network events に共通する
data を表す抽象型である。
context に加えて、 request を開始した document node の `sharedId` を含めることを検討する。
-
request data を、request で get the request data した結果とする。
-
navigation を request の navigation id とする。
-
navigable id を null とする。
-
top-level navigable id を null とする。
-
user context id を null とする。
-
request の client が environment settings object である場合:
-
environment settings を request の client とする。
-
environment settings の global object が active window である navigable が存在する場合、navigable id をその navigable の navigable id に設定し、top-level navigable id をその navigable の top-level traversable の navigable id に設定し、 user context id をその navigable の associated user context の user context id に設定する。
-
-
intercepts を、 session、event、request、および top-level navigable id で get the network intercepts した結果とする。
-
redirect count を request の redirect count とする。
-
timestamp を、UTC における現在の日付と時刻を表す time value とする。
-
intercepts が空でない場合、 is blocked を true とし、そうでなければ is blocked を false とする。
-
params を、
network.BaseParametersproduction に一致する map とし、requestfield を request data に設定し、 navigation field をnavigationに設定し、contextfield を navigable id に設定し、userContextfield を user context id に設定し、timestampfield を timestamp に設定し、redirectCountfield を redirect count に設定し、isBlockedfield を is blocked に設定し、is blocked が true である場合はinterceptsfield を intercepts に設定し、そうでなければ省略する。 -
params を返す
7.5.4.4. network.BytesValue 型
network.BytesValue= network.StringValue / network.Base64Value;network.StringValue= {type:"string",value: text, }network.Base64Value= {type:"base64",value: text, }
network.BytesValue
型は、network を通じて送信される binary data を表す。
valid UTF-8 は network.StringValue 型で表され、
その他の data は Base64-encoded form として
network.Base64Value で表される。
注: これは
network.BytesValue
として encode された bytes を受け取り、
byte sequence を返す。
-
protocol bytes が
network.StringValueproduction に一致する場合、 bytes を、protocol bytes["value"] で UTF-8 encode した結果とする。 -
そうでなく、protocol bytes が
network.Base64Valueproduction に一致する場合、bytes を、protocol bytes["value"] で forgiving-base64 decode した結果とする。 -
bytes を返す。
注記: これはバイト列を受け取り、
network.BytesValueを返す。
-
textを、bytesをBOM なしで UTF-8 デコードし、失敗する ことによって得られる結果とする。
-
textが失敗である場合、
network.Base64Value生成規則に一致し、valueが bytesを寛容な base64 エンコードしたものに設定されたマップを返す。 -
network.StringValue生成規則に一致し、valueがtextに設定されたマップを返す。
7.5.4.5. network.Collector 型
network.Collector = text
network.Collector
型は、collectorの ID を表す。
7.5.4.6. network.CollectorType 型
network.CollectorType="blob"
注記: 将来的には、ストリームを介して指定された collector により 収集されたデータを読み取りたいクライアント向けに、"stream" collector 型もサポートする可能性がある。
network.CollectorType
型は、追加できるデータ collector のさまざまな型を表す。
7.5.4.7. network.Cookie 型
network.SameSite="strict"/"lax"/"none"/"default"network.Cookie= {name: text,value: network.BytesValue,domain: text,path: text,size: js-uint,httpOnly: bool,secure: bool,sameSite: network.SameSite, ?expiry: js-uint, Extensible, }
network.Cookie 型は Cookie を表す。
-
nameを、stored cookieの name フィールドでUTF-8 decodeした結果とする。
-
valueを、stored cookieの value でプロトコルバイトを直列化する結果とする。
-
domainを、stored cookieの domain フィールドとする。
-
pathを、stored cookieの path フィールドとする。
-
expiryを、stored cookieの expiry-time フィールドが設定されている場合は unix タイムスタンプとして表したもの、そうでなければ null とする。
-
sizeを、stored cookieを
Cookieヘッダー内で表されるものとして直列化した結果のバイト長とする。 -
http onlyを、stored cookieの http-only-flag が true であれば true、 そうでなければ false とする。
-
secureを、stored cookieの secure-only-flag が true であれば true、 そうでなければ false とする。
-
same siteを、stored cookieの same-site-flag が "
None" であれば "none"、"Lax" であれば "lax"、 "Strict" であれば "strict"、 "Default" であれば "default" とする -
network.Cookie生成規則に一致するマップを返す。 そのnameフィールドはnameに、valueフィールドは valueに、domainフィールドはdomainに、pathフィールドはpathに、expiryフィールドは expiryが null でなければexpiryに設定され、そうでなければ省略され、sizeフィールドはsizeに、httpOnlyフィールドはhttp onlyに、secureフィールドはsecureに、そしてsameSiteフィールドはsame siteに設定される。
7.5.4.8. network.CookieHeader 型
network.CookieHeader= {name: text,value: network.BytesValue, }
network.CookieHeader 型は、Cookieリクエストヘッダー内にある
Cookie データの部分集合を表す。
-
nameを、protocol cookie["
name"]をUTF-8 encodeしたものとする。 -
valueを、protocol cookie["
value"]でプロトコルバイトを逆直列化する結果とする。 -
header valueを、name、 `
=`、およびvalueを連結して形成されるバイト列とする -
header valueを返す。
7.5.4.9. network.DataType 型
network.DataType="request"/"response"
network.DataType
型は、収集できるネットワークデータのさまざまな型を表す。
7.5.4.10. network.FetchTimingInfo 型
network.FetchTimingInfo= {timeOrigin: float,requestTime: float,redirectStart: float,redirectEnd: float,fetchStart: float,dnsStart: float,dnsEnd: float,connectStart: float,connectEnd: float,tlsStart: float,requestStart: float,responseStart: float,responseEnd: float, }
network.FetchTimingInfo 型は、requestの
clientのtime originを基準とした、リクエストの各部分の時刻を表す。
-
globalを、requestのclientとする。
-
globalが null である場合、すべてのフィールドが 0 に設定された
network.FetchTimingInfo生成規則に一致するマップを返す。 -
time originを、globalでtime origin timestamp を取得する結果とする。
-
timingsを、requestのfetch timing infoとする。
-
connection timingを、timingsのfinal connection timing infoが null でなければそれとし、そうでなければ新しいconnection timing infoとする。
-
request timeを、timingsのstart timeおよびglobalが与えられたとして fetch timestamp を変換する結果とする。
-
redirect startを、timingsの redirect start timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
redirect endを、timingsのredirect end timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
fetch startを、timingsの post-redirect start timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
DNS startを、connection timingの domain lookup start time およびglobalが与えられたとしてfetch timestamp を変換する結果とする。
-
DNS endを、connection timingの domain lookup end timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
TLS startを、connection timingの secure connection start timeおよびglobalが与えられたとしてfetch timestamp を変換する結果とする。
-
connect startを、connection timingのconnection start timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
connect endを、connection timingの connection end timeおよび globalが与えられたとしてfetch timestamp を変換する結果とする。
-
request startを、timingsのfinal network-request start timeおよびglobalが与えられたとしてfetch timestamp を変換する結果とする。
-
response startを、timingsのfinal network-response start timeおよびglobalが与えられたとしてfetch timestamp を変換する結果とする。
-
response endを、timingsの end timeおよびglobalが与えられたとしてfetch timestamp を変換する結果とする。
-
timeOriginフィールドがtime originに、requestTimeフィールドがrequest timeに、redirectStartフィールドがredirect startに、redirectEndフィールドがredirect endに、fetchStartフィールドがfetch startに、dnsStartフィールドがDNS startに、dnsEndフィールドがDNS endに、connectStartフィールドがconnect startに、connectEndフィールドがconnect endに、tlsStartフィールドがTLS startに、requestStartフィールドがrequest startに、responseStartフィールドがresponse startに、そしてresponseEndフィールドがresponse endに設定された、network.FetchTimingInfo生成規則に一致するマップを返す。
TODO: service worker フィールドを追加する
7.5.4.11. network.Header 型
network.Header= {name: text,value: network.BytesValue, }
network.Header 型は単一のリクエストヘッダーを表す。
-
nameを、name bytesでUTF-8 decodeした結果とする。
表明:ヘッダー名は ASCII のみに制約されているため、これは失敗しない。
-
valueを、value bytesでプロトコルバイトを直列化する結果とする。
-
nameフィールドがnameに、valueフィールドが valueに設定された、network.Header生成規則に一致するマップを返す。
-
nameを、protocol header["
name"]をUTF-8 encodeしたものとする。 -
valueを、protocol header["
value"]でプロトコルバイトを逆直列化する結果とする。 -
header (name, value) を返す。
-
headersを空のヘッダーリストとする。
-
protocol headers内の各headerについて:
-
deserialized headerを、headerを用いてヘッダーをデシリアライズした結果とする。
-
deserialized headerの名前がフィールド名トークン 生成規則に一致しない場合、エラーを エラーコード "
invalid argument"として返す。 -
deserialized headerの値がヘッダー 値 生成規則に一致しない場合、エラーを エラーコード "
invalid argument"として返す。 -
deserialized headerをheadersに付加する。
-
-
データheadersとともに成功を返す
7.5.4.12. network.Initiator 型
network.Initiator= { ?columnNumber: js-uint, ?lineNumber: js-uint, ?request: network.Request, ?stackTrace: script.StackTrace, ?type:"parser"/"script"/"preflight"/"other"}
network.Initiator 型は、ネットワークリクエストの発生源を表す。
注記: typeフィールドは後方互換性のために
定義に含まれているが、initiator
を取得する手順によって設定されることはなくなっており、
この仕様の将来の改訂で削除される予定である。その使用は
network.RequestData上のinitiatorTypeおよびdestinationに
置き換えられることが期待される。
注記: requestフィールドは後方互換性のために
定義に含まれているが、initiator
を取得する手順によって設定されることはなくなっており、
この仕様の将来の改訂で削除される予定である。
network.Initiatorは、同じリクエスト ID も含む
network.BeforeRequestSentParametersに含まれるため、
この情報は冗長である。§ 7.5.4.3 network.BaseParameters 型を参照。
-
requestのinitiator typeが "
fetch" または "xmlhttprequest" である場合:-
stack traceを現在のスタックトレースとする。
-
stack traceのサイズが 1 以上である場合、 line numberをstack trace[0]の
lineNumberフィールドの値とし、column numberを stack trace[0]のcolumnNumberフィールドの値とする。そうでなければ、 line numberおよびcolumn numberを 0 とする。
そうでなければ、stack trace、column number、およびline numberをすべて null とする。
TODO: Chrome は、parser により挿入されたリソースについて、現在の parser 位置を column number / line number として含める。
-
-
network.Initiator生成規則に一致するマップを返す。 そのcolumnNumberフィールドはcolumn numberが null でなければ設定され、 そうでなければ省略される。lineNumberフィールドはline numberが null でなければ設定され、そうでなければ省略され、stackTraceフィールドは stack traceが null でなければ設定され、そうでなければ省略される。
7.5.4.13. network.Intercept 型
network.Intercept = text
network.Intercept 型は、ネットワークインターセプトの ID を表す。
7.5.4.14. network.Request 型
network.Request = text;
各ネットワークリクエストは、関連付けられたリクエスト IDを持つ。これは、そのリクエストを一意に識別する 文字列である。リダイレクトの結果生じるリクエストの識別子は、それを開始したリクエストのものと一致する。
7.5.4.15. network.RequestData 型
network.RequestData= {request: network.Request,url: text,method: text,headers: [*network.Header],cookies: [*network.Cookie],headersSize: js-uint,bodySize: js-uint / null,destination: text,initiatorType: text / null,timings: network.FetchTimingInfo, }
network.RequestData 型は、進行中のネットワークリクエストを表す。
requestが与えられたとき、リクエスト データを取得するには:
-
request idを、request のリクエスト IDとする。
-
urlを、requestの URLでURL シリアライザーを実行した結果とする。
-
methodを、requestのmethodとする。
-
body sizeを null とする。
-
bodyを、request のbodyとする。
-
bodyがバイト列である場合、 body sizeをその列の長さに設定する。そうでなく、bodyがbodyである場合、 body sizeをその body の長さに設定する。
-
headers sizeを、[HTTP11]により義務付けられるように直列化されたときの、 requestのheaders listのバイト単位のサイズとする。
注記: ヘッダー圧縮を許可するプロトコルでは、 これはネットワーク上で送信されたヘッダーの圧縮後サイズである。
-
headersを空のリストとする。
-
cookiesを空のリストとする。
-
requestのheaders list内の各(name, value)について:
-
nameおよび valueでヘッダーを直列化する結果をheadersに付加する。
-
nameが "
Cookie" とバイト大小無視一致する場合:-
requestに含まれる、ユーザーエージェントのCookie ストア内の各cookieについて:
注記: [COOKIES]は、ストア内のどの Cookie が リクエストに含まれうるかについていくつかの基本要件を定義するが、ユーザーエージェントは 追加の制約を課してもよい。
-
cookieが与えられたとしてCookie を直列化する結果を cookiesに付加する。
-
-
-
-
destinationを、requestのdestinationとする。
-
initiator typeを、requestのinitiator typeとする。
-
timingsを、requestでfetch タイミングを取得する結果とする。
-
network.RequestData生成規則に一致するマップを返す。 そのrequestフィールドはrequest idに、urlフィールドは urlに、methodフィールドはmethodに、headersフィールドはheadersに、cookiesフィールドは cookiesに、headersSizeフィールドはheaders sizeに、bodySizeフィールドはbody sizeに、destinationフィールドはdestinationに、initiatorTypeフィールドは initiator typeに、そしてtimingsフィールドはtimingsに設定される。
7.5.4.16. network.ResponseContent 型
network.ResponseContent= {size: js-uint }
network.ResponseContent 型は、ネットワークリクエストに対するデコード済みレスポンスを表す。
-
sizeフィールドがresponseのresponse body infoのdecoded sizeに設定された、network.ResponseContent生成規則に一致する新しいマップを返す
7.5.4.17. network.ResponseData 型
network.ResponseData= {url: text,protocol: text,status: js-uint,statusText: text,fromCache: bool,headers: [*network.Header],mimeType: text,bytesReceived: js-uint,headersSize: js-uint / null,bodySize: js-uint / null,content: network.ResponseContent, ?authChallenges: [*network.AuthChallenge], }
network.ResponseData 型は、ネットワークリクエストに対するレスポンスを表す。
responseが与えられたとき、protocol を取得するには:
-
protocolを空文字列とする。
-
responseのfinal connection timing infoが null でない場合、protocolを responseのfinal connection timing infoのALPN negotiated protocolに設定する。
-
protocolが空文字列であるか、"
unknown" に等しい場合:-
protocolが "
http" または "https" のいずれかに等しく、かつresponseに関連付けられた HTTP Response がある場合。注記: [FETCH]は、 HTTP ネットワークレスポンスと response オブジェクトとの関係について明確ではない。
-
http versionを、HTTP Response の Status line の HTTP-version [HTTP11]とする。
-
http versionが "
HTTP/" で始まる場合:-
versionを、http versionの 5 から http versionの長さまでのコード単位部分文字列とする。
-
versionが "
0.9" である場合、protocolを "http/0.9" に設定し、そうでなくversionが "1.0" である場合、 protocolを "http/1.0" に設定し、そうでなく versionが "1.1" である場合、protocolを "http/1.1" に設定する。
-
-
-
protocolを返す。
-
urlを、responseの URLでURL シリアライザーを実行した結果とする。
-
protocolを、responseが与えられたとしてprotocol を取得する結果に設定する。
-
statusを、responseのstatusとする。
-
status textを、responseのstatus messageとする。
-
responseのcache stateが "
local" である場合、 from cacheを true とし、そうでなければ false とする。 -
headersを空のリストとする。
-
mime typeを、responseについての計算済み MIME 型のessenceとする。
注記: これは、ブラウザーが実際に使用している MIME 型であり、 たとえ[MIMESNIFF]仕様の正確なアルゴリズムに従っていなくても同様である。
-
responseのheaders list内の各(name, value)について:
-
nameおよび valueでヘッダーを直列化する結果をheadersに付加する。
-
-
bytes receivedを、responseに関連付けられた HTTP レスポンスの一部として送信された総バイト数とする。
-
headers sizeを、HTTP レスポンスのヘッダー フィールドセクションの一部として送信されたバイト数とする。
-
body sizeを、responseのresponse body infoのencoded sizeとする。
-
contentを、responseでレスポンス content 情報を取得する結果とする。
-
auth challengesを、responseでchallenge を抽出する結果とする。
-
network.ResponseData生成規則に一致するマップを返す。 そのurlフィールドはurlに、protocolフィールドは protocolに、statusフィールドはstatusに、statusTextフィールドはstatus textに、fromCacheフィールドはfrom cacheに、headersフィールドはheadersに、mimeTypeフィールドはmime typeに、bytesReceivedフィールドはbytes receivedに、headersSizeフィールドはheaders sizeに、bodySizeフィールドはbody sizeに、contentフィールドはcontentに設定され、authChallengesフィールドは auth challengesが null でなければauth challengesに設定され、そうでなければ省略される。
7.5.4.18. network.SetCookieHeader 型
network.SetCookieHeader= {name: text,value: network.BytesValue, ?domain: text, ?httpOnly: bool, ?expiry: text, ?maxAge: js-int, ?path: text, ?sameSite: network.SameSite, ?secure: bool, }
network.SetCookieHeader は、
Set-Cookie response header 内の data を表す。
注: これは input の最短表現を decimal digits の string として生成する。
-
serialized を空文字列とする。
-
value を input とする。
-
value が 0 より大きい間:
-
x を value を 10 で割ったものとする。
-
most significant digits を x の integer part とする。
-
y を most significant digits に 10 を掛けたものとする。
-
least significant digit を value - y とする。
-
Assert: least significant digit は 0 から 9 までの範囲の integer (両端を含む)である。
-
codepoint を、value が U+0030 DIGIT ZERO の value + least significant digit である code point とする。
-
codepoint を serialized の先頭に付加する。
-
value を most significant digits に設定する。
-
-
serialized を返す。
-
nameを、protocol cookie["
name"]をUTF-8 エンコードしたものとする。 -
valueを、protocol cookie["
value"]を用いてプロトコルバイトをデシリアライズした結果とする。 -
header valueを、name、 `
=`、およびvalueを連結して形成されるバイト シーケンスとする。 -
protocol cookieが "
expiry"を含む場合:-
attributeを`
;Expires=`とする -
protocol cookie["
expiry"]をUTF-8 エンコードしたものを attributeに付加する。 -
attributeをheader valueに付加する。
-
-
protocol cookieが "
maxAge"を含む場合:-
attributeを`
;Max-Age=`とする -
max age stringを、protocol cookie["
maxAge"]を整数としてシリアライズした結果とする。 -
max age stringをUTF-8 エンコードしたものを attributeに付加する。
-
attributeをheader valueに付加する。
-
-
protocol cookieが "
domain"を含む場合:-
attributeを`
;Domain=`とする -
protocol cookie["
domain"]をUTF-8 エンコードしたものを attributeに付加する。 -
attributeをheader valueに付加する。
-
-
protocol cookieが "
path"を含む場合:-
attributeを`
;Path=`とする -
protocol cookie["
path"]をUTF-8 エンコードしたものを attributeに付加する。 -
attributeをheader valueに付加する。
-
-
protocol cookieが "
secure"を含み、かつprotocol cookie["secure"]が true の場合:-
`
;Secure`をheader valueに付加する。
-
-
protocol cookieが "
httpOnly"を含み、かつprotocol cookie["httpOnly"]が true の場合:-
`
;HttpOnly`をheader valueに付加する。
-
-
protocol cookieが "
sameSite"を含む場合:-
attributeを`
;SameSite=`とする -
protocol cookie["
sameSite"]をUTF-8 エンコードしたものを attributeに付加する。 -
attributeをheader valueに付加する。
-
-
header valueを返す。
7.5.4.19. network.UrlPattern 型
network.UrlPattern= ( network.UrlPatternPattern / network.UrlPatternString )network.UrlPatternPattern= {type:"pattern", ?protocol: text, ?hostname: text, ?port: text, ?pathname: text, ?search: text, }network.UrlPatternString= {type:"string",pattern: text, }
network.UrlPattern は、network
intercepts の request URL を照合するために使用される pattern を表す。
URL が network.UrlPattern に対して照合されるとき、URL は
parse され、各 component は、存在する場合、pattern 内の対応する field と
等価性で比較される。pattern にない fields は常に一致する。
注: この構文は将来の拡張性を 念頭に置いて設計されている。特に、この構文は [URLPattern] 仕様で特別に扱われる文字を禁止する。これらは U+005C (\) 文字を前置することで escape できる。
-
has protocolを true とする。
-
has hostnameを true とする。
-
has portを true とする。
-
has pathnameを true とする。
-
has searchを true とする。
-
patternが
network.UrlPatternPattern生成規則に一致する場合:-
pattern urlを空文字列とする。
-
patternが"
protocol"を含む場合: -
そうでなければ:
-
has protocolを false に設定する。
-
"
http"をpattern urlに付加する。
-
-
schemeを、pattern urlをASCII 小文字化したものとする。
-
"
:"をpattern urlに付加する。 -
schemeが特殊である場合、"
//"をpattern urlに付加する。 -
patternが"
hostname"を含む場合:-
hostnameを、pattern["
hostname"]を用いてURL パターンをエスケープ解除することを試行した結果とする。 -
inside bracketsを false とする。
-
hostname内の各codepointについて:
-
hostnameをpattern urlに付加する。
-
そうでなければ:
-
schemeが"
file"ではない場合、 "placeholder"を pattern urlに付加する。 -
has hostnameを false に設定する。
-
-
patternが"
port"を含む場合: -
そうでなければ:
-
has portを false に設定する。
-
-
patternが"
pathname"を含む場合: -
そうでなければ:
-
has pathnameを false に設定する。
-
-
patternが"
search"を含む場合: -
そうでなければ:
-
has searchを false に設定する。
-
-
-
そうでなく、patternが
network.UrlPatternString生成規則に一致する場合:-
pattern urlを、 pattern["
pattern"]を用いてURL パターンをエスケープ解除することを試行した結果とする。
-
-
urlを、pattern urlを解析した結果とする。
-
parsedを、次のフィールドを持つ構造体とする:
- protocol
- has protocolが true の場合はurlのスキーム、そうでなければ null。
- hostname
- has hostnameが true の場合はurlのホスト、そうでなければ null。
- port
- pathname
-
-
has pathnameが false の場合:
-
null。
-
-
そうでなければ:
-
urlのパスが空文字列ではなく、かつ 空ではない場合、 urlを用いてURL パスシリアライザーを実行した結果、 そうでなければ null。
-
-
- search
-
データparsedとともに成功を返す。
-
urlを、url stringを解析する結果とする。
-
url patternの protocol が null でなく、かつurlの schemeに等しくない場合、false を返す。
-
url patternの hostname が null でなく、かつurlの hostに等しくない場合、false を返す。
-
url patternの port が null でない場合:
-
url patternの pathname が null でなく、かつurlで URL path serializerを実行した結果に等しくない場合、false を返す。
-
url patternの search が null でない場合:
-
url queryを、urlのqueryとする。
-
url queryが null である場合、url queryを空文字列に設定する。
-
url patternの search がurl queryに等しくない場合、false を返す。
-
-
true を返す。
7.5.5. コマンド
7.5.5.1. network.addDataCollector コマンド
network.addDataCollector は collector を追加する。
- コマンド型
-
network.AddDataCollector= (method:"network.addDataCollector",params: network.AddDataCollectorParameters )network.AddDataCollectorParameters= {dataTypes: [+network.DataType],maxEncodedDataSize: js-uint, ?collectorType: network.CollectorType .default "blob", ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], } - 返却型
-
network.AddDataCollectorResult= {collector: network.Collector }
-
collector idを、UUIDの文字列表現とする。
-
input context idsを空の集合とする。
-
command parametersの
contextsフィールドが存在する場合、 command parameters[contexts]を用いて集合を作成することにより、 input context idsを設定する。 -
data typesを、 command parameters["
dataTypes"]を用いて集合を作成したものとする。 -
max encoded item sizeをcommand parameters ["
maxEncodedDataSize"]とする。注記:
maxEncodedDataSizeパラメータは 最大エンコード済み項目サイズを表し、 指定されたコレクターによって収集される各リクエストのサイズを制限するものであり、 コレクター全体の収集済みサイズを制限するものではない。注記: 実装ごとに サポートするエンコーディングが異なる場合があり、そのため エンコード後のサイズもブラウザー間で異なる場合がある。したがって、同じデータコレクター 構成であっても、一部のネットワークデータが最大エンコード済み項目サイズに収まるのは 一部の実装だけである場合がある。
-
collector typeをcommand parameters ["
collectorType"]とする。 -
input user context idsを空の集合とする。
-
command parametersの
userContextsフィールドが存在する場合、 command parameters[userContexts]を用いて集合を作成することにより、 input user context idsを設定する。 -
input user context idsが空ではなく、かつinput context idsも 空ではない場合、エラーをエラー コード 無効な引数として返す。
-
max encoded item sizeが 0 であるか、またはmax encoded item sizeが 最大総収集サイズより大きい場合、エラーをエラー コード 無効な引数として返す。
-
input context idsが空ではない場合:
-
navigablesを、input context idsを用いて ID により有効なナビゲータブルを取得することを試行した結果とする。
-
navigables内の各navigableについて:
-
navigableがトップレベルナビゲータブルではない場合、エラーを エラーコード 無効な引数として返す。
-
-
-
そうでなく、input user context idsが空ではない場合:
-
input user context idsの各user context idについて反復する:
-
user contextを、user context idを用いてユーザーコンテキストを取得した結果とする。
-
user contextが null の場合、エラーをエラーコード 該当するユーザーコンテキストなしとして返す。
-
-
-
collectorを、次のように設定されたコレクターとする: 最大エンコード済み項目サイズフィールドを max encoded item sizeに設定し、 データ型フィールドをdata typesに設定し、 コレクターフィールドをcollector idに設定し、 コレクター型フィールドをcollector typeに設定し、 コンテキストフィールドをinput context idsに設定し、 ユーザーコンテキストフィールドをinput user context idsに設定する。
-
sessionのネットワークコレクター[collector id]を collectorに設定する。
-
network.AddDataCollectorResult生成規則に一致し、collectorフィールドがcollector idに設定された新しいマップを返す。
7.5.5.2. network.addIntercept コマンド
network.addIntercept command は network intercept を追加する。
- コマンド型
-
network.AddIntercept= (method:"network.addIntercept",params: network.AddInterceptParameters )network.AddInterceptParameters= {phases: [+network.InterceptPhase], ?contexts: [+browsingContext.BrowsingContext], ?urlPatterns: [*network.UrlPattern], }network.InterceptPhase="beforeRequestSent"/"responseStarted"/"authRequired" - 返却型
-
network.AddInterceptResult= {intercept: network.Intercept }
-
interceptを、UUIDの文字列表現とする。
-
url patternsを、存在する場合はcommand parametersの
urlPatternsフィールド、そうでなければ空のリストとする。 -
navigablesを null とする。
-
command parametersの
contextsフィールドが存在する場合: -
intercept mapをsessionのインターセプトマップとする。
-
parsed patternsを空のリストとする。
-
url patterns内の各url patternについて:
-
parsedを、url patternを用いてURL パターンを解析することを試行した結果とする。
-
parsedをparsed patternsに付加する。
-
-
intercept map[intercept]を、
url patternsparsed patterns、phasescommand parameters["phases"]、およびbrowsingContextsnavigablesを持つ構造体に設定する。 -
network.AddInterceptResult生成規則に一致し、interceptフィールドがinterceptに設定された新しいマップを返す。
7.5.5.3. network.continueRequest コマンド
network.continueRequestコマンドは、ネットワークインターセプトによりブロックされたリクエストを 続行する。
- コマンド型
-
network.ContinueRequest= (method:"network.continueRequest",params: network.ContinueRequestParameters )network.ContinueRequestParameters= {request: network.Request, ?body: network.BytesValue, ?cookies: [*network.CookieHeader], ?headers: [*network.Header], ?method: text, ?url: text, } - 戻り値型
-
network.ContinueRequestResult= EmptyResult
-
blocked requestsをsessionのブロックされたリクエストマップとする。
-
request idをcommand parameters["
request"]とする。 -
blocked requestsが request idを含まない場合、 エラーをエラー コード 該当するリクエストなしとして返す。
-
(request, phase, response)をblocked requests[request id]とする。
-
command parametersが "
url"を含む場合: -
command parametersが "
method"を含む場合: -
command parametersが "
headers"を含む場合:-
headersを空のヘッダーリストとする。
-
command parameters["
headers"]内の各headerについて:-
deserialized headerを、headerを用いてヘッダーを デシリアライズした結果とする。
-
deserialized headerの名前がフィールド名トークン 生成規則に一致しない場合、エラーをエラーコード "
invalid argument"として返す。 -
deserialized headerの値がヘッダー値 生成規則に一致しない場合、エラーをエラーコード "
invalid argument"として返す。 -
deserialized headerをheadersに付加する。
-
-
requestのヘッダーリストをheadersに設定する。
-
-
command parametersが "
cookies"を含む場合:-
cookie headerを空のバイト シーケンスとする。
-
command parameters["
cookies"]内の各cookieについて:-
cookie headerが空ではない場合、`
;`をcookie headerに付加する。 -
cookieを用いてcookie ヘッダーをシリアライズしたものを cookie headerに付加する。
-
-
found cookie headerを false とする。
-
requestのヘッダーリスト内の各headerについて:
-
nameをheaderの名前とする。
-
nameをバイト小文字化したものが `
cookie`である場合:-
headerの値をcookie headerに設定する。
-
found cookie headerを true に設定する。
-
中断する。
-
-
-
found cookie headerが false の場合:
-
-
command parametersが "
body"を含む場合:-
bodyを、command parameters["
body"]を用いてプロトコルバイトをデシリアライズした結果とする。 -
requestのボディをbodyに設定する。
-
-
"
continue request"、request id、および (null, "incomplete")を用いて再開する。 -
データ null とともに成功を返す。
7.5.5.4. network.continueResponse コマンド
network.continueResponseコマンドは、ネットワークインターセプトによりブロックされた
レスポンスを続行する。これは、responseStartedフェーズで呼び出すことができ、
レスポンスの status および headers を変更しつつ、ネットワークレスポンス body は引き続き提供する。
- コマンド型
-
network.ContinueResponse= (method:"network.continueResponse",params: network.ContinueResponseParameters )network.ContinueResponseParameters= {request: network.Request, ?cookies: [*network.SetCookieHeader] ?credentials: network.AuthCredentials, ?headers: [*network.Header], ?reasonPhrase: text, ?statusCode: js-uint, } - 戻り値型
-
network.ContinueResponseResult= EmptyResult
-
request idをcommand parameters["
request"]とする。 -
responseを、session、"
continueResponse"、および command parametersを用いてレスポンスを 更新することを試行した結果とする。 -
"
continue request"、request id、および (response, "incomplete")を用いて再開する。 -
データ null とともに成功を返す。
7.5.5.5. network.continueWithAuth コマンド
network.continueWithAuth command は、
authRequired phase で
network intercept によって
block されている
response を続行する。
- コマンド型
-
network.ContinueWithAuth= (method:"network.continueWithAuth",params: network.ContinueWithAuthParameters )network.ContinueWithAuthParameters= {request: network.Request, (network.ContinueWithAuthCredentials // network.ContinueWithAuthNoCredentials) }network.ContinueWithAuthCredentials= (action:"provideCredentials",credentials: network.AuthCredentials )network.ContinueWithAuthNoCredentials= (action:"default"/"cancel") - 返却型
-
network.ContinueWithAuthResult= EmptyResult
-
blocked requestsをsessionのブロックされたリクエストマップとする。
-
request idをcommand parameters["
request"]とする。 -
blocked requestsが request idを含まない場合、 エラーをエラー コード 該当するリクエストなしとして返す。
-
(request, phase, response)をblocked requests[request id]とする。
-
command parametersの"
action"が"cancel"である場合、 responseの認証資格情報を "cancelled"に設定する。 -
command parametersの"
action"が "provideCredentials"である場合:-
credentialsをcommand parameters["
credentials"]とする。 -
表明: credentials["
type"]は "password"である。 -
responseの認証資格情報を (credentials["
username"], credentials["password"]) に設定する
-
-
"
continue request"、request id、および (response, "incomplete")を用いて再開する。 -
データ null とともに成功を返す。
7.5.5.6. network.disownData コマンド
network.disownDataコマンドは、指定されたcollectorについて、収集されたネットワークデータを解放する。
- コマンド型
-
network.DisownData= (method:"network.disownData",params: network.DisownDataParameters )network.DisownDataParameters= {dataType: network.DataType,collector: network.Collector,request: network.Request, } - 戻り値型
-
network.DisownDataResult= EmptyResult
-
data typeをcommand parameters内の"
dataType"フィールドの値とする。 -
collector idをcommand parameters内の"
collector"フィールドの値とする。 -
request idをcommand parameters内の"
request"フィールドの値とする。 -
collectorsをsessionのネットワークコレクターとする。
-
collectorsが collector idを含まない場合、 エラーをエラー コード 該当するネットワークコレクターなしとして返す。
-
collected dataを、request idおよび data typeを用いて収集済みデータを取得した結果とする。
-
collected dataが null の場合、エラーをエラーコード 該当するネットワーク データなしとして返す。
-
collected dataおよびcollector idを用いて、データからコレクターを削除する。
7.5.5.7. network.failRequest コマンド
network.failRequestコマンドは、ネットワークインターセプトによりブロックされた fetch を失敗させる。
- コマンド型
-
network.FailRequest= (method:"network.failRequest",params: network.FailRequestParameters )network.FailRequestParameters= {request: network.Request, } - 戻り値型
-
network.FailRequestResult= EmptyResult
-
blocked requestsをsessionのブロックされたリクエストマップとする。
-
request idをcommand parameters["
request"]とする。 -
blocked requestsが request idを含まない場合、 エラーをエラー コード 該当するリクエストなしとして返す。
-
(request, phase, response)を blocked requests[request id]とする。
-
responseを新しいネットワークエラーとする。
エラーの 正確な種類を設定できるようにする [課題 #508]
-
"
continue request"、request id、および (response, "complete")を用いて再開する。 -
データ null とともに成功を返す。
7.5.5.8. network.getData コマンド
network.getDataコマンドは、利用可能であれば ネットワークデータを取得する。
- コマンド型
-
network.GetData= (method:"network.getData",params: network.GetDataParameters )network.GetDataParameters= {dataType: network.DataType, ?collector: network.Collector, ?disown: bool .default false,request: network.Request, } - 戻り値型
-
network.GetDataResult= {bytes: network.BytesValue, }
-
data typeをcommand parameters["
dataType"]とする。 -
request idをcommand parameters["
request"]とする。 -
collector idを null とする。
-
command parametersが "
collector"を含む場合:-
collectorsをsessionのネットワークコレクターとする。
-
collectorsがcollector idを含まない場合、 エラーをエラーコード 該当するネットワークコレクターなしとして返す。
-
collector idをcommand parameters["
collector"]に設定する。
-
-
disownをcommand parameters["
disown"]とする。 -
disownが true であり、かつcollector idが null の場合、エラーを エラーコード 無効な引数として返す。
-
collected dataを、request idおよび data typeを与えて収集済みデータを取得した結果とする。
-
collected dataが null の場合:
-
エラーをエラーコード 該当する ネットワークデータなしとして返す。
-
-
collected dataの保留中が true の場合:
-
"network data collected"および(request id, data type)を用いて待機する。
-
-
collector idが null ではなく、かつcollected dataのコレクターが collector idを含まない場合:
-
エラーをエラーコード 該当する ネットワークデータなしとして返す。
-
-
bytesをcollected dataのバイトとする。
-
bytesが null の場合、
-
エラーをエラーコード 利用できないネットワークデータとして返す。
-
-
bodyを、
network.GetDataResult生成規則に一致し、bytesフィールドがbytesに設定されたマップとする。 -
disownが true の場合、collected dataおよびcollector idを用いてデータからコレクターを削除する。
-
データbodyとともに成功を返す。
7.5.5.9. network.provideResponse コマンド
network.provideResponse コマンドは、 network intercept によってブロックされた request を、完全な response を提供することにより継続する。
注: これは、request が通常の request ライフサイクルを通過し、それに伴って他のイベントを発行することを防がない。
- コマンド型
-
network.ProvideResponse= (method:"network.provideResponse",params: network.ProvideResponseParameters )network.ProvideResponseParameters= {request: network.Request, ?body: network.BytesValue, ?cookies: [*network.SetCookieHeader], ?headers: [*network.Header], ?reasonPhrase: text, ?statusCode: js-uint, } - 戻り値型
-
network.ProvideResponseResult= EmptyResult
-
request idをcommand parameters["
request"]とする。 -
responseを、 session、"
provideResponse"、およびcommand parametersを用いてレスポンスを 更新することを試行した結果とする。 -
command parametersが "
body"を含む場合:-
bodyを、command parameters["
body"]を用いてプロトコルバイトをデシリアライズした結果とする。
-
-
"
continue request"、request id、および (response,"complete")を用いて再開する。 -
データ null とともに成功を返す。
7.5.5.10. network.removeDataCollector コマンド
network.removeDataCollector コマンドは collector を削除する。
- コマンド型
-
network.RemoveDataCollector= (method:"network.removeDataCollector",params: network.RemoveDataCollectorParameters )network.RemoveDataCollectorParameters= {collector: network.Collector } - 戻り値型
-
network.RemoveDataCollectorResult= EmptyResult
-
collector idをcommand parameters内の"
collector"フィールドの値とする。 -
collectorsをsessionのネットワークコレクターとする。
-
collectorsが collector idを含まない場合、 エラーをエラー コード 該当するネットワークコレクターなしとして返す。
-
sessionのネットワーク コレクターからcollector idを削除する。
-
収集済みネットワークデータ内の各collected dataについて、 collected dataおよびcollector idを用いてデータからコレクター を削除する。
7.5.5.11. network.removeIntercept コマンド
network.removeInterceptコマンドは、ネットワークインターセプトを除去する。
- コマンド型
-
network.RemoveIntercept= (method:"network.removeIntercept",params: network.RemoveInterceptParameters )network.RemoveInterceptParameters= {intercept: network.Intercept } - 戻り値型
-
network.RemoveInterceptResult= EmptyResult
-
interceptをcommand parameters内の"
intercept"フィールドの値とする。 -
intercept mapをsessionのインターセプトマップとする。
-
intercept mapが interceptを含まない場合、 エラーをエラー コード 該当するインターセプトなしとして返す。
-
intercept mapからinterceptを削除する。
注記: インターセプトを削除しても、このインターセプトによってすでに ブロックされているリクエストには影響しない。今後のリクエスト、または既存の リクエストの今後のフェーズのみが影響を受ける。
7.5.5.12. network.setCacheBehavior コマンド
network.setCacheBehaviorコマンドは、 特定のリクエストについてネットワークキャッシュ挙動を構成する。
- コマンド型
-
network.SetCacheBehavior= (method:"network.setCacheBehavior",params: network.SetCacheBehaviorParameters )network.SetCacheBehaviorParameters= {cacheBehavior:"default"/"bypass", ?contexts: [+browsingContext.BrowsingContext] } - 戻り値型
-
network.SetCacheBehaviorResult= EmptyResult
-
navigableを null とする。
-
requestのclientが環境設定オブジェクトである場合:
-
environment settingsを、requestのclientとする。
-
environment settingsの大域オブジェクトがアクティブウィンドウであるnavigableが存在する場合、 navigable をその navigable のトップレベル辿可能に設定する。
-
-
navigableが null でなく、かつnavigable キャッシュ挙動マップが navigableを含む場合、navigable キャッシュ挙動 マップ[navigable]を返す。
-
既定のキャッシュ挙動を返す。
-
top-level navigableをnavigableのトップレベルナビゲータブルとする。
-
ナビゲータブルキャッシュ動作マップがtop-level navigableを含む場合、 ナビゲータブルキャッシュ動作マップ[top-level navigable]を返す。
-
デフォルトキャッシュ動作を返す。
-
behaviorをcommand parameters["
cacheBehavior"]とする。 -
command parametersが "
contexts"を含まない場合:-
デフォルトキャッシュ動作を behaviorに設定する。
-
behavior の値に応じて分岐する:
- "
bypass" - 実装固有のリソースキャッシュを無効化するための 実装定義の手順を実行する。
- "
default" - 現在のリモートエンド構成で通常有効になっている 実装固有のリソースキャッシュを有効化するための実装定義の手順を実行する。
- "
-
データ null とともに成功を返す。
-
-
navigablesを空の集合とする。
-
command parameters["
contexts"]の各navigable idについて:-
contextを、navigable idを用いて ナビゲータブルを 取得することを試行した結果とする。
-
contextがトップレベルブラウジングコンテキストではない場合、エラーを エラーコード 無効な引数として返す。
-
contextをnavigablesに付加する。
-
-
navigables内の各navigableについて:
-
ナビゲータブルキャッシュ動作マップがnavigableを含み、かつ ナビゲータブルキャッシュ動作 マップ[navigable]がbehaviorと等しい場合、 続行する。
-
behavior の値に応じて分岐する:
- "
bypass" - navigableがトップレベルブラウジングコンテキストである任意のブラウジング コンテキストから発生するネットワークリクエストについて、実装固有の リソースキャッシュを無効化するための実装定義の手順を実行する。
- "
default" - navigableが トップレベルブラウジングコンテキストである任意のブラウジングコンテキストから 発生するネットワークリクエストについて、現在のリモートエンド構成で通常有効になっている 実装固有のリソースキャッシュを有効化するための実装定義の手順を実行する。
- "
-
behaviorがデフォルトキャッシュ動作と等しい場合:
-
ナビゲータブルキャッシュ動作マップが navigableを含む場合、 ナビゲータブルキャッシュ動作 マップ[navigable]を削除する。
-
-
そうでなければ:
-
ナビゲータブルキャッシュ動作 マップ[navigable]をbehaviorに設定する。
-
-
-
データ null とともに成功を返す。
7.5.5.13. network.setExtraHeaders コマンド
network.setExtraHeadersコマンドは、 既存のリクエストヘッダーを拡張または上書きするヘッダーの指定を可能にする。
- コマンド型
-
network.SetExtraHeaders= (method:"network.setExtraHeaders",params: network.SetExtraHeadersParameters )network.SetExtraHeadersParameters= {headers: [*network.Header] ?contexts: [+browsingContext.BrowsingContext] ?userContexts: [+browser.UserContext] } - 戻り値型
-
network.SetExtraHeadersResult= EmptyResult
-
表明: related navigablesのサイズは 0 または 1 である。
注記: これは、複数の ナビゲータブルに関連付けられたワーカーでは機能しないことを意味する。その場合、どの順序でヘッダーをオーバーライドするかは不明である。
-
user context headersをsessionの追加ヘッダーの ユーザーコンテキストヘッダーとする。
-
related navigables内の各navigableについて:
-
user contextをnavigableの関連付けられた ユーザーコンテキストとする。
-
user context headersがuser contextを含む場合、 requestおよび user context headers[user context]を用いてヘッダーを 更新する
-
-
navigable headersをsessionの追加ヘッダーの ナビゲータブルヘッダーとする。
-
related navigables内の各navigableについて:
-
top-level traversableをnavigableの トップレベルナビゲータブルとする。
-
navigable headersがtop-level traversableを含む場合、 requestおよびnavigable headers[top-level traversable]を用いてヘッダーを 更新する。
-
-
command parametersが "
userContexts" を含み、 かつcommand parametersが "contexts"を含む場合、 エラーをエラー コード 無効な引数として返す。 -
headersを、 command parameters["
headers"]を用いてヘッダーリストを作成することを試行した結果とする。 -
command parametersが "
userContexts"を含む場合:-
user contextsを空のリストとする。
-
command parameters["
userContexts"]内の各user context idについて:-
user contextを、user context idを用いてユーザーコンテキストを取得した結果とする。
-
user contextが null の場合、エラーをエラーコード 該当するユーザーコンテキストなしとして返す。
-
user contextをuser contextsに付加する。
-
-
targetをsessionの追加ヘッダーの ユーザーコンテキストヘッダーとする
-
user contexts内の各user contextについて:
-
target[user context]をheadersに設定する。
-
-
データ null とともに成功を返す。
-
-
command parametersが "
contexts"を含む場合:-
navigablesを、 command parameters["
contexts"]を用いて ID により有効なトップレベル ナビゲータブルを取得することを試行した結果とする。 -
targetをsessionの追加ヘッダーの ナビゲータブルヘッダーとする
-
navigables内の各navigableについて:
-
target[navigable]をheadersに設定する。
-
-
データ null とともに成功を返す。
-
-
データ null とともに成功を返す。
7.5.6. イベント
7.5.6.1. network.authRequired イベント
- イベント型
-
network.AuthRequired= (method:"network.authRequired",params: network.AuthRequiredParameters )network.AuthRequiredParameters= { network.BaseParameters,response: network.ResponseData }
このイベントは、ユーザーエージェントが認可資格情報の入力を求めようとしているときに 発火される。
-
redirect countを、requestのredirect countとする。
-
表明:before request sent マップ[request]は redirect countに等しい。
注記: これは、すべての呼び出し側が これらの手順の前に、requestでWebDriver BiDi before request sent手順が 呼び出されることを保証する必要があることを意味する。
-
requestのclientが null でない場合、related navigablesを、requestの clientで関連 navigable を取得する結果とする。そうでなければ、related navigables を空の 集合とする。
-
"
network.authRequired" およびrelated navigablesが与えられたときの、イベントが有効なセッションの集合 内の各sessionについて:-
paramsを、session、 "
network.authRequired"、およびrequestでネットワークイベントを処理する結果とする。 -
response dataを、responseでレスポンス データを取得する結果とする。
-
表明:response dataは "
authChallenge"を含む。 -
paramsの
responseフィールドをresponse dataに設定する。 -
表明:paramsは
network.AuthRequiredParameters生成規則に一致する。 -
bodyを、
paramsフィールドがparamsに設定された、network.AuthRequired生成規則に一致するマップとする。 -
sessionおよびbodyでイベントを 発出する。
-
params["
isBlocked"]が true である場合:-
blocked requestsを、sessionのブロックされた リクエストマップとする。
-
request idを、requestのリクエスト IDとする。
-
blocked requests[request id]を(request, "
authRequired", response)に設定する。 -
«"
continue request"» およびrequest idで待機する。 -
blocked requests[request id]を除去する。
-
-
7.5.6.2. network.beforeRequestSent イベント
- イベント型
-
network.BeforeRequestSent= (method:"network.beforeRequestSent",params: network.BeforeRequestSentParameters )network.BeforeRequestSentParameters= { network.BaseParameters, ?initiator: network.Initiator, }
このイベントは、リクエストが(ネットワーク経由で、または serviceworker やローカルキャッシュによって 処理される前に)送信される前に発火される。
-
settings を request の client とする。
-
related navigables を、settings で get related navigables したものとする。
-
related navigables 内の navigable について:
-
navigable の associated user context が user context である場合、true を返す。
-
-
false を返す。
-
related navigablesの各navigableについて:
-
top-level traversableをnavigableのトップレベルナビゲータブルとする。
-
user contextをtop-level traversableの関連付けられた ユーザーコンテキストとする。
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたネットワーク 条件の ナビゲータブル ネットワーク条件が top-level traversableを含む場合、 sessionの エミュレートされたネットワーク 条件の ナビゲータブル ネットワーク条件[top-level traversable]を返す。
-
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件が user contextを含む場合、 sessionの エミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件[user context]を返す。
-
-
アクティブな BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたネットワーク 条件の デフォルト ネットワーク条件が null ではない場合、 sessionのエミュレートされたネットワーク 条件の デフォルト ネットワーク条件を返す。
-
-
-
null を返す。
-
navigableをsettingsの関連グローバルオブジェクトの 関連付けられた
Documentのノードナビゲータブルとする。 -
emulated network conditionsを、 [navigable]を用いてエミュレートされたネットワーク条件を取得した結果とする。
-
emulated network conditionsが null ではなく、かつemulated network conditionsの オフラインが true の場合、true を返す。
-
false を返す。
-
ユーザーコンテキストの集合内の各user contextについて:
-
requestおよび user contextを用いたリクエストがユーザーコンテキストで発生する手順が true を返す場合:
-
アクティブな BiDi セッション内の各sessionについて:
注記: user contextは複数の ユーザー コンテキストから安全でない証明書の受け入れオーバーライドへのマップに含まれることはない。
-
sessionのユーザー コンテキストから安全でない証明書の受け入れオーバーライドへのマップが user contextを含む場合:
-
accept insecure certificatesを sessionの ユーザー コンテキストから安全でない証明書の受け入れオーバーライドへの マップ[user context]とする。
-
accept insecure certificatesが true の場合:
-
エンドポイントノードが 安全でない TLS 接続の受け入れをサポートすることを表明する。
-
requestについて基本証明書 処理手順を実行するとき、 手順 a と、その他の実装定義の証明書検証手順をスキップする。
-
-
そうでなければ、requestについて基本証明書処理 手順を実行するとき、 その他の実装定義の証明書検証手順とともにすべての手順を実行する。
-
注記: user contextは複数の ユーザーコンテキストからプロキシ 構成へのマップに含まれることはない。
-
sessionのユーザーコンテキスト からプロキシ構成へのマップが user contextを含む場合:
-
proxy configurationをsessionの ユーザー コンテキストからプロキシ構成へのマップ[user context]とする。
-
requestが proxy configurationによって定義されたプロキシ設定を使用することを保証するため、実装定義の手順を実行する。
注記: 設定はユーザーコンテキストの作成時に検証されるため、この時点では有効であるとみなされる。プロキシへのアクセス時に発生するエラーは、 リクエストを処理するときに ネットワークエラーとして報告される。
-
-
-
-
-
requestを用いてネットワークリクエストボディを収集する可能性がある。
-
リクエスト送信前マップが requestを含まない場合、リクエスト送信前マップ[request]を 新しい集合に設定する。
-
redirect countをrequestのリダイレクト回数とする。
-
redirect countをリクエスト送信前マップ[request]に追加する。
-
requestのクライアントが null ではない場合、related navigablesを requestのクライアントを用いて関連するナビゲータブルを取得した結果とする。そうでなければ、related navigablesを空の 集合とする。
-
responseを null とする。
-
response statusを"
incomplete"とする。 -
アクティブな BiDi セッション内の各sessionについて:
-
session、request、および related navigablesを用いてリクエストヘッダーを更新する。
-
-
"
network.beforeRequestSent"およびrelated navigablesを与えたときのイベントが有効になっているセッションの 集合内の各sessionについて:-
paramsを、session、 "
network.beforeRequestSent"、およびrequestを用いてネットワーク イベントを処理した結果とする。 -
initiatorを、requestを用いてイニシエーターを取得した結果とする。
-
initiatorが空ではない場合、paramsの
initiatorフィールドをinitiatorに設定する。 -
表明: paramsは
network.BeforeRequestSentParameters生成規則に一致する。 -
bodyを、
network.BeforeRequestSent生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。 -
sessionおよびbodyを用いてイベントを 発行する。
-
params["
isBlocked"]が true の場合:-
blocked requestsをsessionのブロックされた リクエストマップとする。
-
request idをrequestのリクエスト IDとする。
-
blocked requests[request id]を(request, "
beforeRequestSent", null)に設定する。 -
(response, status)を、«"
continue request"»およびrequestのリクエスト IDを用いて待機した結果とする。 -
statusが"
complete"である場合、response statusを statusに設定する。 -
blocked requests[request id]を削除する。
注記: 待機中は、リクエストのそれ以上の 処理は行われない。
-
-
-
emulated network conditionsを、 related navigablesを用いてエミュレートされたネットワーク条件を取得した結果とする。
-
emulated network conditionsが null ではなく、かつ emulated network conditionsのオフラインが true の場合、(ネットワークエラー, "
complete")を返す。 -
(response, response status)を返す。
7.5.6.3. network.fetchError イベント
- イベント型
-
network.FetchError= (method:"network.fetchError",params: network.FetchErrorParameters )network.FetchErrorParameters= { network.BaseParameters,errorText: text, }
このイベントは、ネットワークリクエストがエラーで終了したときに発火される。
-
before request sent map[request] が request の redirect count を含まない場合、request で WebDriver BiDi before request sent 手順を実行する。
注: これにより、呼び出し元がすべてのエラーパスで WebDriver BiDi before request sent 手順を明示的に呼び出す必要なく、
network.fetchErrorの前にnetwork.beforeRequestSentが常に発火され得ることが保証される。 -
request の client が null でない場合、related navigables を request の client で get related navigables した結果とする。そうでなければ related navigables を空の set とする。
-
request で Maybe abort network response body collection する。
-
"
network.fetchError" および related navigables が与えられたときの、 set of sessions for which an event is enabled 内の各 session について:-
params を、session、 "
network.fetchError"、および request で process a network event した結果とする。 -
params の
errorTextフィールドを、リクエストを中止させたエラーを説明する 実装定義の文字列に設定する。 -
Assert: params は
network.FetchErrorParametersproduction に一致する。 -
body を、
paramsフィールドを params に設定した、network.FetchErrorproduction に一致する map とする。 -
session および body で Emit an event する。
-
7.5.6.4. network.responseCompleted イベント
- イベント型
-
network.ResponseCompleted= (method:"network.responseCompleted",params: network.ResponseCompletedParameters )network.ResponseCompletedParameters= { network.BaseParameters,response: network.ResponseData, }
このイベントは、完全なレスポンスボディが受信された後に発火される。
-
redirect count を request の redirect count とする。
-
Assert: before request sent map[request] は redirect count を含む。
注: これは、すべての呼び出し元が、これらの手順の前に WebDriver BiDi before request sent 手順が request で呼び出されることを保証する必要があることを意味する。
-
request の client が null でない場合、related navigables を request の client で get related navigables した結果とする。そうでなければ related navigables を空の set とする。
-
request および response で Maybe collect network response body する。
-
sessions を、"
network.responseCompleted" および related navigables が与えられたときの set of sessions for which an event is enabled とする。 -
sessions 内の各 session について:
-
params を、session、 "
network.responseCompleted"、および request で process a network event した結果とする。 -
Assert: params["
isBlocked"] は false である。 -
response data を、response で get the response data した結果とする。
-
params の
responseフィールドを response data に設定する。 -
Assert: params は
network.ResponseCompletedParametersproduction に一致する。 -
body を、
paramsフィールドを params に設定した、network.ResponseCompletedproduction に一致する map とする。 -
session および body で Emit an event する。
-
7.5.6.5. network.responseStarted イベント
- イベント型
-
network.ResponseStarted= (method:"network.responseStarted",params: network.ResponseStartedParameters )network.ResponseStartedParameters= { network.BaseParameters,response: network.ResponseData, }
このイベントは、レスポンスヘッダーが受信された後、ただし body が完了する前に発火される。
-
redirect count を request の redirect count とする。
-
Assert: before request sent map[request] は redirect count と等しい。
注: これは、すべての呼び出し元が、これらの手順の前に WebDriver BiDi before request sent 手順が request で呼び出されることを保証する必要があることを意味する。
-
request の client が null でない場合、related navigables を request の client で get related navigables した結果とする。そうでなければ related navigables を空の set とする。
-
response status を "
incomplete" とする。 -
sessions を、"
network.responseStarted" および related navigables が与えられたときの set of sessions for which an event is enabled とする。 -
sessions 内の各 session について:
-
params を、session、 "
network.responseStarted"、および request で process a network event した結果とする。 -
response data を、response で get the response data した結果とする。
-
params の
responseフィールドを response data に設定する。 -
Assert: params は
network.ResponseStartedParametersproduction に一致する。 -
body を、
paramsフィールドを params に設定した、network.ResponseStartedproduction に一致する map とする。 -
session および body で Emit an event する。
-
params["
isBlocked"] が true の場合:-
blocked requests を session の blocked request map とする。
-
request id を request の request id とする。
-
blocked requests[request id] を (request, "
beforeRequestSent", response) に設定する。 -
(response, status) を、 «"
continue request"» および request id で await したものとする。 -
status が "
complete" の場合、response status を status に設定する。 -
blocked requests[request id] を Remove する。
-
-
-
(response, response status) を返す。
7.6. script モジュール
script モジュールは、script レルムおよび実行に関連するコマンドとイベントを含む。
7.6.1. 定義
ScriptCommand = (
script.AddPreloadScript //
script.CallFunction //
script.Disown //
script.Evaluate //
script.GetRealms //
script.RemovePreloadScript
)
ScriptResult= ( script.AddPreloadScriptResult / script.CallFunctionResult / script.DisownResult / script.EvaluateResult / script.GetRealmsResult / script.RemovePreloadScriptResult )ScriptEvent= ( script.Message // script.RealmCreated // script.RealmDestroyed )
7.6.2. プリロードスクリプト
プリロードスクリプトは、新しいWindowの作成時に実行されるものであり、
author 定義のスクリプトが実行される前に実行される。
TODO: これを他の種類のレルム内のスクリプトにも拡張する。
BiDi セッションはプリロードスクリプトマップを持ち、
これはマップであり、
そのキーはUUIDで、その値は、文字列である
function declarationという名前の項目、
リストであるargumentsという名前の項目、
リストまたは null であるcontextsという名前の項目、
文字列または null であるsandboxという名前の項目、
および集合である
user contextsという名前の項目を持つ構造体である。
注記: プリロードスクリプトの実行が、構文エラーまたは 実行時例外のために失敗した場合、その実行が行われていたレルムで [ECMAScript]例外が報告され、他のプリロードスクリプトは通常どおり実行される。
-
documentを、environment settingsの関連大域オブジェクトの 関連付けられた
Documentとする。 -
navigableを、documentのnavigableとする。
-
user contextを、navigableの関連付けられたユーザー コンテキストとする。
-
user context idを、user contextのユーザー コンテキスト IDとする。
-
アクティブ BiDi セッション内の各sessionについて:
-
sessionのプリロードスクリプトマップの 値内の各preload scriptについて:
-
preload scriptの
user contextsのサイズがゼロでない場合: -
preload scriptの
contextsが null でない場合: -
preload scriptの
sandboxが null でない場合、 realmを、preload scriptのsandboxおよび navigableでsandbox レルムを取得または作成する 結果とする。そうでなければ、realmをenvironment settingsの レルム実行コンテキストの Realm component とする。 -
exception reporting globalを、environment settingsの レルム実行コンテキストの Realm component の大域オブジェクトとする。
-
argumentsを、preload scriptの
argumentsとする。 -
deserialized argumentsを空のリストとする。
-
arguments内の各argumentについて:
-
channelを、session、realm、および argumentでチャネルを作成する結果とする。
-
channelをdeserialized argumentsに付加する。
-
-
base URLを、environment settingsのAPI 基底 URLとする。
-
optionsを、既定のスクリプトフェッチオプションとする。
-
function declarationを、preload scriptの
function declarationとする。 -
function body evaluation statusを、 function declaration、 environment settings、base URL、およびoptionsで 関数本体を評価する結果とする。
-
function body evaluation statusがabrupt completionである場合、 function body evaluation status.[[Value]]により与えられる例外を、 exception reporting globalについて 報告する。
-
function objectを、function body evaluation status.[[Value]]とする。
-
IsCallable(function object)が
falseである場合: -
environment settingsでスクリプトを実行する準備をする。
-
evaluation statusを Call(function object, null, deserialized arguments)に設定する。
-
environment settingsでスクリプト実行後の後始末をする。
-
evaluation statusがabrupt completionである場合、 evaluation status.[[Value]]により与えられる例外を、 exception reporting globalについて 報告する。
-
-
7.6.3. 型
7.6.3.1. script.Channel 型
script.Channel = text;
script.Channel
型は、リモートエンドから
ローカルエンドへカスタムメッセージを送信するために使用される、
特定のチャネルの ID を表す。
7.6.3.2. script.ChannelValue 型
script.ChannelValue= {type:"channel",value: script.ChannelProperties, }script.ChannelProperties= {channel: script.Channel, ?serializationOptions: script.SerializationOptions, ?ownership: script.ResultOwnership, }
script.ChannelValue型は、
リモートエンドからローカルエンドへ
メッセージを送信する関数へ逆直列化できるArgumentValueを表す。
session、realm および protocol value が与えられたときに create a channel するには:
-
channel properties を protocol value["
value"] とする。 -
steps を、引数 message が与えられたときの次の手順とする:
-
current realm を current Realm Record とする。
-
session、current realm、channel properties および message で Emit a script message する。
-
-
CreateBuiltinFunction(steps, 1, "", « », realm) を返す。
7.6.3.3. script.EvaluateResult 型
script.EvaluateResult= ( script.EvaluateResultSuccess / script.EvaluateResultException )script.EvaluateResultSuccess= {type:"success",result: script.RemoteValue,realm: script.Realm }script.EvaluateResultException= {type:"exception",exceptionDetails: script.ExceptionDetailsrealm: script.Realm }
script.EvaluateResult 型は、script を実行するコマンドの戻り値を示す。
script.EvaluateResultSuccess バリアントは、script が正常に完了した場合に使用され、
script.EvaluateResultException バリアントは、script が投げられた例外により
完了した場合に使用される。
7.6.3.4. script.ExceptionDetails 型
script.ExceptionDetails= {columnNumber: js-uint,exception: script.RemoteValue,lineNumber: js-uint,stackTrace: script.StackTrace,text: text, }
script.ExceptionDetails型は JavaScript 例外を表す。
realm、完了レコード record、ownership type、およびsessionを与えて例外 詳細を取得するには:
-
表明: record.[[Type]]は
throwである。 -
textを、recordによって表されるエラーの実装定義のテキスト記述とする。
TODO: ここでの要件をより厳密にすること。おそらく人々は regex や、それと同程度に不適切な何かを使って このデータを解析しようとするだろう。
-
serialization optionsを、
script.SerializationOptions生成規則に一致し、フィールドが それぞれのデフォルト値に設定されたマップとする。 -
exceptionを、 record.[[Value]]、serialization options、ownership type、 シリアライズ内部マップとして新しいマップ、realm、および sessionを用いてリモート値として シリアライズすることによって得られる結果とする。
-
stack traceを、recordを与えたときの例外のスタックトレースとする。
-
stack traceのサイズが 1 以上である場合、line numberを stack trace[0]内の
lineNumberフィールドの値とし、column numberを stack trace[0]内のcolumnNumberフィールドの値とする。そうでなければ、 line numberおよびcolumn numberを 0 とする。 -
exception detailsを、
script.ExceptionDetails生成規則に一致し、textフィールドがtextに、exceptionフィールドがexceptionに、lineNumberフィールドがline numberに、columnNumberフィールドがcolumn numberに、かつstackTraceフィールドがstack traceに設定されたマップとする。 -
exception detailsを返す。
7.6.3.5. script.Handle 型
script.Handle = text;
script.Handle型は、ECMAScript ランタイムに所有されるオブジェクトへのハンドルを表す。
このハンドルは特定のRealm内でのみ有効である。
各 ECMAScript Realmには、対応するハンドルオブジェクトマップがある。これは ハンドル ID からそれに対応するオブジェクトへの強いマップである。
7.6.3.6. script.InternalId 型
script.InternalId = text;
script.InternalId型は、
直列化中に以前に直列化された
script.RemoteValueの ID を表す。
7.6.3.7. script.LocalValue 型
script.LocalValue= ( script.RemoteReference / script.PrimitiveProtocolValue / script.ChannelValue / script.ArrayLocalValue / { script.DateLocalValue } / script.MapLocalValue / script.ObjectLocalValue / { script.RegExpLocalValue } / script.SetLocalValue )script.ListLocalValue= [*script.LocalValue];script.ArrayLocalValue= {type:"array",value: script.ListLocalValue, }script.DateLocalValue= (type:"date",value: text )script.MappingLocalValue= [*[(script.LocalValue / text), script.LocalValue]];script.MapLocalValue= {type:"map",value: script.MappingLocalValue, }script.ObjectLocalValue= {type:"object",value: script.MappingLocalValue, }script.RegExpValue= {pattern: text, ?flags: text, }script.RegExpLocalValue= (type:"regexp",value: script.RegExpValue, )script.SetLocalValue= {type:"set",value: script.ListLocalValue, }
script.LocalValue
型は、ECMAScript へ逆直列化できる値を表す。これには、プリミティブ値および非プリミティブ値の
両方に加え、リモート参照および
チャネルが含まれる。
serialized key-value list、realm およびsessionを与えてキーと値の リストをデシリアライズするには:
-
deserialized key-value listを新しいリストとする。
-
serialized key-value list内の各serialized key-valueについて:
-
serialized keyをserialized key-value[0]とする。
-
serialized keyが
stringである場合、 deserialized keyをserialized keyとする。 -
そうでなければ、deserialized keyを、serialized key、realm、およびsessionを 与えてローカル値をデシリアライズすることを試行した結果とする。
-
serialized valueをserialized key-value[1]とする。
-
deserialized valueを、serialized value、realm、およびsessionを与えて ローカル値をデシリアライズすることを試行した結果とする。
-
CreateArrayFromList(«deserialized key, deserialized value»)を deserialized key-value listに付加する。
-
データdeserialized key-value listとともに成功を返す。
serialized value list、realm、および sessionを与えて値の リストをデシリアライズするには:
-
deserialized valuesを新しいリストとする。
-
serialized value list内の各serialized valueについて:
-
deserialized valueを、serialized value、realm、およびsessionを与えて ローカル値をデシリアライズすることを試行した結果とする。
-
deserialized valueをdeserialized valuesに付加する;
-
-
データdeserialized valuesとともに成功を返す。
local protocol value、realm、および sessionを与えてローカル 値をデシリアライズするには:
-
local protocol valueがscript.RemoteReference 生成規則に一致する場合、 与えられたlocal protocol value、realm、および sessionのリモート参照をデシリアライズする結果を返す。
-
local protocol valueがscript.PrimitiveProtocolValue生成規則に一致する場合、 local protocol valueを用いて プリミティブプロトコル値をデシリアライズする 結果を返す。
-
local protocol valueが
script.ChannelValue生成規則に一致する場合、 session、realm、およびlocal protocol valueを用いてチャネルを 作成する結果を返す。 -
typeをlocal protocol valueの
typeフィールドの値とし、そのようなフィールドが 存在しない場合は undefined とする。 -
valueをlocal protocol valueの
valueフィールドの値とし、そのようなフィールドが 存在しない場合は undefined とする。 -
以下の条件とそれに対応する手順のリストにおいて、対応する条件が true となる最初の手順の組を 実行する:
- typeが文字列"
array"である -
-
deserialized value listを、value、realm、およびsessionを与えて値のリストをデシリアライズすることを試行した結果とする。
-
データCreateArrayFromList(deserialized value list)とともに成功を返す。
-
- typeが文字列"
date"である - typeが文字列"
map"である -
-
deserialized key-value listを、value、realm、およびsessionを用いて キーと値のリストをデシリアライズすることを試行した結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
- typeが文字列"
object"である -
-
deserialized key-value listを、value、realm、およびsessionを用いて キーと値のリストをデシリアライズすることを試行した結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
データObject.fromEntries(iterable)とともに成功を返す。
-
- typeが文字列"
regexp"である - typeが文字列"
set"である -
-
deserialized value listを、value、realm、およびsessionを与えて値のリストをデシリアライズすることを試行した結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
データSet object(iterable)とともに成功を返す。
-
- それ以外
- エラーをエラーコード 無効な引数として返す。
- typeが文字列"
7.6.3.8. script.PreloadScript 型
script.PreloadScript = text;
script.PreloadScript型は、realm 作成時に実行されるスクリプトへのハンドルを表す。
7.6.3.9. script.Realm 型
script.Realm = text;
各realmには、関連付けられたrealm IDがあり、これはその realm を 一意に識別する文字列である。これは realm が作成されるときに暗黙的に設定される。
realm のrealm IDは不透明であり、 対応する大域オブジェクトのハンドル ID からハンドルオブジェクトマップ内で導出可能であってはならず、また 関連する場合には、任意のnavigable ID からnavigableにおいて導出可能であってはならない。
注記: これは、ユーザーが異なる ID 間の 実装固有の関係に依存しないようにするためである。
7.6.3.10. script.PrimitiveProtocolValue 型
script.PrimitiveProtocolValue= ( script.UndefinedValue / script.NullValue / script.StringValue / script.NumberValue / script.BooleanValue / script.BigIntValue )script.UndefinedValue= {type:"undefined", }script.NullValue= {type:"null", }script.StringValue= {type:"string",value: text, }script.SpecialNumber="NaN"/"-0"/"Infinity"/"-Infinity";script.NumberValue= {type:"number",value: number / script.SpecialNumber, }script.BooleanValue= {type:"boolean",value: bool, }script.BigIntValue= {type:"bigint",value: text, }
script.PrimitiveProtocolValueは、参照によってではなく、 値によってのみ表現できる値を表す。
valueを与えてプリミティブプロトコル値をシリアライズするには:
-
remote valueを undefined とする。
-
以下の条件とそれに対応する手順のリストにおいて、対応する条件が true である最初の 手順の組があれば、それを実行する:
- Type(value)が undefined である
- remote valueを、
ローカルエンド定義内のscript.UndefinedValue生成規則に一致するマップとする。 - Type(value)が Null である
- remote valueを、
ローカルエンド定義内のscript.NullValue生成規則に一致するマップとする。 - Type(value)が String である
-
remote valueを、
ローカルエンド定義内のscript.StringValue生成規則に一致し、valueプロパティがvalueに設定されたマップとする。 - Type(value)が Number である
- Type(value)が Boolean である
- remote valueを、
ローカルエンド定義内のscript.BooleanValue生成規則に一致し、valueプロパティがvalueに設定されたマップとする。 - Type(value)が BigInt である
- remote valueを、
ローカルエンド定義内のscript.BigIntValue生成規則に一致し、valueプロパティがvalueに対してToString 操作を実行した結果に設定されたマップとする。
-
remote valueを返す
primitive protocol valueを与えてプリミティブプロトコル値をデシリアライズするには:
-
typeをprimitive protocol valueの
typeフィールドの値とする。 -
valueを undefined とする。
-
primitive protocol valueが
valueフィールドを持つ場合:-
valueをprimitive protocol valueの
valueフィールドの値とする。
-
-
以下の条件とそれに対応する手順のリストにおいて、対応する条件が true である最初の手順の組を実行する:
7.6.3.11. script.RealmInfo 型
script.RealmInfo= ( script.WindowRealmInfo / script.DedicatedWorkerRealmInfo / script.SharedWorkerRealmInfo / script.ServiceWorkerRealmInfo / script.WorkerRealmInfo / script.PaintWorkletRealmInfo / script.AudioWorkletRealmInfo / script.WorkletRealmInfo )script.BaseRealmInfo= (realm: script.Realm,origin: text )script.WindowRealmInfo= { script.BaseRealmInfo,type:"window",context: browsingContext.BrowsingContext, ?userContext: browser.UserContext, ?sandbox: text }script.DedicatedWorkerRealmInfo= { script.BaseRealmInfo,type:"dedicated-worker",owners: [script.Realm] }script.SharedWorkerRealmInfo= { script.BaseRealmInfo,type:"shared-worker"}script.ServiceWorkerRealmInfo= { script.BaseRealmInfo,type:"service-worker"}script.WorkerRealmInfo= { script.BaseRealmInfo,type:"worker"}script.PaintWorkletRealmInfo= { script.BaseRealmInfo,type:"paint-worklet"}script.AudioWorkletRealmInfo= { script.BaseRealmInfo,type:"audio-worklet"}script.WorkletRealmInfo= { script.BaseRealmInfo,type:"worklet"}
注記:
script.RealmInfo
変種とscript.RealmTypeの値の間には 1:1 の関係がある。
script.RealmInfo型は realm のプロパティを表す。
-
global objectをrealmのグローバルオブジェクトとする。
-
global objectを、global objectをアンラップしたものとする。
-
global objectが
Windowオブジェクトでない場合、nullを返す。 -
documentを、global objectのラップされた
Windowの 関連付けられたDocumentとする。 -
documentのノードナビゲータブルを返す。
-
表明: global objectは
WorkerGlobalScopeオブジェクトである。 -
ownersを空のリストとする。
-
global objectに関連付けられた所有者集合内の各ownerについて:
-
owner environment settingsをownerの関連設定オブジェクトとする。
-
owner realm infoを、 owner environment settingsを与えてRealm 情報を取得した結果とする。
-
owner realm infoが null の場合、続行する。
-
owner realm info["
id"]をownersに付加する。
-
-
ownersを返す。
-
realmをenvironment settingsのRealm 実行コンテキストの Realm コンポーネントとする。
-
realm idをrealmのRealm IDとする。
-
originを、environment settingsのoriginを与えたときのオリジンのシリアライズとする。
-
global objectをenvironment settingsによって指定されたグローバルオブジェクトとする
-
最初に一致する条件の手順を実行する:
- global objectが
Windowオブジェクトである -
-
documentをenvironment settingsの関連グローバルオブジェクトの 関連付けられた
Documentとする。 -
navigableをdocumentのノードナビゲータブルとする。
-
navigableが null の場合、null を返す。
-
navigable idをnavigableのナビゲータブル IDとする。
-
user context idを、 navigableの関連付けられたユーザーコンテキストのユーザーコンテキスト IDとする
-
realm infoを、
script.WindowRealmInfo生成規則に一致し、realmフィールドがrealm idに、originフィールドがoriginに、contextフィールドが navigable idに、かつuserContextフィールドがuser context idに設定されたマップとする。
-
- global objectが
SandboxWindowProxyオブジェクトである -
TODO: これがサンドボックスを処理するための適切な定式化であるかは不明である。
-
documentをglobal objectのラップされた
Windowの 関連付けられたDocumentとする。 -
navigableをdocumentのノードナビゲータブルとする。
-
navigableが null の場合、null を返す。
-
navigable idをnavigableのナビゲータブル IDとする。
-
user context idを、 navigableの関連付けられたユーザーコンテキストのユーザーコンテキスト IDとする
-
sandbox nameを、 realmを与えてサンドボックス名を 取得した結果とする。
-
表明: sandbox nameは null ではない。
-
realm infoを、
script.WindowRealmInfo生成規則に一致し、realmフィールドがrealm idに、originフィールドがoriginに、contextフィールドが navigable idに、userContextフィールドがuser context idに、かつsandboxフィールドがsandbox nameに設定されたマップとする。
-
- global objectが
DedicatedWorkerGlobalScopeオブジェクトである -
-
ownersを、global objectを与えてワーカーの 所有者を取得した結果とする。
-
表明: ownersは正確に 1 個の項目を持つ。
-
realm infoを、
script.DedicatedWorkerRealmInfo生成規則に一致し、realmフィールドがrealm idに、originフィールドが originに、かつownersフィールドが ownersに設定されたマップとする。
-
- global objectが
SharedWorkerGlobalScopeオブジェクトである -
-
realm infoを、
script.SharedWorkerRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドが originに設定されたマップとする。
-
- global objectが
ServiceWorkerGlobalScopeオブジェクトである -
-
realm infoを、
script.ServiceWorkerRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドが originに設定されたマップとする。
-
- global objectが
WorkerGlobalScopeオブジェクトである -
-
realm infoを、
script.WorkerRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドがoriginに設定されたマップとする。
-
- global objectが
PaintWorkletGlobalScopeオブジェクトである -
-
realm infoを、
script.PaintWorkletRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドがoriginに設定されたマップとする。
-
- global objectが
AudioWorkletGlobalScopeオブジェクトである -
-
realm infoを、
script.AudioWorkletRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドがoriginに設定されたマップとする。
-
- global objectが
WorkletGlobalScopeオブジェクトである -
-
realm infoを、
script.WorkletRealmInfo生成規則に一致し、realmフィールドがrealm idに、かつoriginフィールドがoriginに設定されたマップとする。
-
- それ以外:
-
-
realm infoを null とする。
-
- global objectが
-
realm infoを返す
注記: この仕様の将来のバリエーションでも、
"-"で分割した後の型名の最後の構成要素が、WorkerGlobalScopeを実装するグローバルでは
常に"worker"となり、
WorkletGlobalScopeを実装するグローバルでは
"worklet"となるという不変条件を維持する。
7.6.3.12. script.RealmType 型
script.RealmType="window"/"dedicated-worker"/"shared-worker"/"service-worker"/"worker"/"paint-worklet"/"audio-worklet"/"worklet"
script.RealmType型は、Realm のさまざまな型を表す。
7.6.3.13. script.RemoteReference 型
script.RemoteReference= ( script.SharedReference / script.RemoteObjectReference )script.SharedReference= {sharedId: script.SharedId ?handle: script.Handle, Extensible }script.RemoteObjectReference= {handle: script.Handle, ?sharedId: script.SharedId Extensible }
script.RemoteReference
型は、与えられたRealm内の
ハンドルオブジェクトマップに存在する
ECMAScript オブジェクトへのリモート参照を表す
script.RemoteObjectReference、またはnodeへの参照を表す
script.SharedReferenceのいずれかである。
"stale object reference" の場合を扱う。
注記: 提供された参照が
handleと
sharedIdの両方を持つ場合、アルゴリズムはhandleを無視し、
sharedIdのみを尊重する。
-
remote referenceが
script.RemoteReference生成規則に一致することを表明する。 -
remote referenceが
script.SharedReference生成規則に一致する場合、 remote reference、realmおよびsessionで共有参照を逆直列化する結果を返す。 -
remote referenceおよび realmでリモートオブジェクト参照を逆直列化する結果を返す。
-
handle idを remote object referenceの
handleフィールドの値とする。 -
handle mapをrealmのハンドルオブジェクトマップとする
-
handle mapがhandle idを含まない場合、エラーを エラーコード 該当するハンドルなしとして返す。
-
データhandle map[handle id]とともに成功を返す。
-
shared referenceが
script.SharedReference生成規則に一致することを表明する。 -
navigableを、realmを用いてナビゲータブルを取得した結果とする。
-
navigableが
nullである場合、エラーをエラーコード 該当する ノードなしとして返す。注記: これは Realm が Window グローバルでない場合に発生する。
-
shared idを shared referenceの
sharedIdフィールドの値とする。 -
nodeを、session、 navigable、およびshared idを用いてノードを取得することを試行した結果とする。
-
nodeが
nullである場合、エラーをエラーコード 該当する ノードなしとして返す。 -
environment settingsを、 Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
nodeのノード文書のオリジンが、environment settingsのオリジンと同一オリジンドメインでない場合、エラーをエラー コード 該当するノードなしとして返す。
注記: これにより、WebDriver-BiDi を使用して、 本来スクリプトアクセスを許可していない Realm 間でオブジェクトを渡すことが できないようにする。
-
realm global objectをrealmのグローバルオブジェクトとする。
-
realm global objectが
SandboxWindowProxyオブジェクトである場合、 nodeをrealm内でnodeをラップするSandboxProxyに設定する。 -
データnodeとともに成功を返す。
7.6.3.14. script.RemoteValue 型
script.RemoteValue= ( script.PrimitiveProtocolValue / script.SymbolRemoteValue / script.ArrayRemoteValue / script.ObjectRemoteValue / script.FunctionRemoteValue / script.RegExpRemoteValue / script.DateRemoteValue / script.MapRemoteValue / script.SetRemoteValue / script.WeakMapRemoteValue / script.WeakSetRemoteValue / script.GeneratorRemoteValue / script.ErrorRemoteValue / script.ProxyRemoteValue / script.PromiseRemoteValue / script.TypedArrayRemoteValue / script.ArrayBufferRemoteValue / script.NodeListRemoteValue / script.HTMLCollectionRemoteValue / script.NodeRemoteValue / script.WindowProxyRemoteValue )script.ListRemoteValue= [*script.RemoteValue];script.MappingRemoteValue= [*[(script.RemoteValue / text), script.RemoteValue]];script.SymbolRemoteValue= {type:"symbol", ?handle: script.Handle, ?internalId: script.InternalId, }script.ArrayRemoteValue= {type:"array", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.ListRemoteValue, }script.ObjectRemoteValue= {type:"object", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.MappingRemoteValue, }script.FunctionRemoteValue= {type:"function", ?handle: script.Handle, ?internalId: script.InternalId, }script.RegExpRemoteValue= { script.RegExpLocalValue, ?handle: script.Handle, ?internalId: script.InternalId, }script.DateRemoteValue= { script.DateLocalValue, ?handle: script.Handle, ?internalId: script.InternalId, }script.MapRemoteValue= {type:"map", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.MappingRemoteValue, }script.SetRemoteValue= {type:"set", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.ListRemoteValue }script.WeakMapRemoteValue= {type:"weakmap", ?handle: script.Handle, ?internalId: script.InternalId, }script.WeakSetRemoteValue= {type:"weakset", ?handle: script.Handle, ?internalId: script.InternalId, }script.GeneratorRemoteValue= {type:"generator", ?handle: script.Handle, ?internalId: script.InternalId, }script.ErrorRemoteValue= {type:"error", ?handle: script.Handle, ?internalId: script.InternalId, }script.ProxyRemoteValue= {type:"proxy", ?handle: script.Handle, ?internalId: script.InternalId, }script.PromiseRemoteValue= {type:"promise", ?handle: script.Handle, ?internalId: script.InternalId, }script.TypedArrayRemoteValue= {type:"typedarray", ?handle: script.Handle, ?internalId: script.InternalId, }script.ArrayBufferRemoteValue= {type:"arraybuffer", ?handle: script.Handle, ?internalId: script.InternalId, }script.NodeListRemoteValue= {type:"nodelist", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.ListRemoteValue, }script.HTMLCollectionRemoteValue= {type:"htmlcollection", ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.ListRemoteValue, }script.NodeRemoteValue= {type:"node", ?sharedId: script.SharedId, ?handle: script.Handle, ?internalId: script.InternalId, ?value: script.NodeProperties, }script.NodeProperties= {nodeType: js-uint,childNodeCount: js-uint, ?attributes: {*text => text}, ?children: [*script.NodeRemoteValue], ?localName: text, ?mode:"open"/"closed", ?namespaceURI: text, ?nodeValue: text, ?shadowRoot: script.NodeRemoteValue / null, }script.WindowProxyRemoteValue= {type:"window",value: script.WindowProxyProperties, ?handle: script.Handle, ?internalId: script.InternalId }script.WindowProxyProperties= {context: browsingContext.BrowsingContext }
WindowProxy は Node と 同様のスタイルで属性を持つべきか?
String / Number / などの wrapper object を特別に扱う?
ECMAScript runtime からアクセス可能な値は mirror
object により表され、script.RemoteValue として指定される。値の型は
type プロパティで指定される。JSON で表現可能な
primitive value の場合、これは value プロパティに値を含む。JSON で表現できない primitive の場合、
value プロパティは値の文字列表現を
含む。
非 primitive object については、handle プロパティが存在する場合、
その object への一意な文字列 handle を含む。handle は各
serialization ごとに一意である。remote end は、対応する handle を持つ object を、
その handle で script.disown が呼び出されるか、
realm 自身が破棄されることになるまで(例: navigation によって)生存させ続ける。
一部の非 primitive 型について、value プロパティは
ECMAScript object 内のデータの表現を含む。container 型では、これはさらに
script.RemoteValue instance を含むことができる。
value プロパティは、重複 object、すなわちその object が現在の
script.RemoteValue 内ですでに serialize されている場合、おそらく cycle の一部として、
または最大 serialization depth に到達した場合、null になり得るか、省略され得る。
同じ script.RemoteValue 内に重複 object がある場合、
値は remote value のうち 1 つに対してのみ提供される一方で、
ECMAScript object ごとに一意な internalId は、与えられた
serialization におけるすべての重複 object に対して提供される。
Node
も script.RemoteValue
instance により表される。これらは value プロパティに node の部分的な serialization を持つ。
mirror objects の lifecycle を再検討する。
注: mirror object は runtime 内で元の object を 生存させ続けない。object が runtime 内で破棄された場合、その後に protocol を介してそれへアクセスしようとすると error になる。
-
ownership type が "
none" と等しい場合、nullを返す。 -
handle id を、object のための新しい一意な文字列 handle とする。
-
handle map を realm の handle object map とする
-
handle map[handle id] を object に設定する。
-
結果として handle id を返す。
-
node を unwrapped node とする。
-
node が
Nodeを実装しない場合、 null を返す。 -
navigable を node の node navigable とする。
-
navigable が null の場合、null を返す。
-
session, navigable および node で get or create a node reference した結果を返す。
-
serialization internal map が object を含まない場合、 serialization internal map[object] を remote value に設定する。
-
そうでなければ、次の手順を実行する:
-
previously serialized remote value を serialization internal map[object] とする。
-
previously serialized remote value が
internalIdフィールドを持たない場合、次の手順を実行する:-
internal id を、真にランダム、または疑似ランダムな数に基づく UUID の文字列表現とする。
-
previously serialized remote value の
internalIdフィールドを internal id に設定する。
-
-
remote value の
internalIdフィールドを、 previously serialized remote value 内のinternalIdフィールドに設定する。
-
value、serialization options、 ownership type、serialization internal map、realmおよび sessionが与えられたとき、リモート値として 直列化するには:
-
remote valueを、 valueが与えられたときのプリミティブプロトコル値を直列化する結果とする。
-
remote valueが undefined でない場合、remote valueを返す。
-
handle idを、realm、 ownership type およびvalueでオブジェクトのハンドルとする。
-
ownership typeを "
none" に設定する。 -
valueが serialization internal map内にある場合はknown objectを
trueとし、 そうでなければfalseとする。 -
以下の条件とそれに関連付けられた手順のリストにおいて、 関連付けられた条件が true である最初の手順群を実行する:
- Type(value) is Symbol
- remote valueを、
ローカルエンド定義内のscript.SymbolRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - IsArray(value)
- remote valueを、
session、
script.ArrayRemoteValue、handle id、known object、 value、 serialization options、ownership type、serialization internal map、 realm、およびsessionでArray-like として直列化する結果とする。 - IsRegExp(value)
- value has a [[DateValue]] internal slot.
-
-
serializedをCall(Date.prototype.toISOString, value)に設定する。
-
表明:serializedはthrow completionでない。
-
remote valueを、
ローカルエンド定義内のscript.DateRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略され、 value がserializedに設定されたマップとする。
-
- value has a [[MapData]] internal slot
-
-
remote valueを、
ローカルエンド定義内のscript.MapRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、 そうでなければ省略されたマップとする。 -
serialization internal map、 remote valueおよびvalueで必要なら内部 ID を設定する。
-
serializedを null とする。
-
known objectが
falseであり、かつserialization options["maxObjectDepth"]が 0 でない場合、次の手順を実行する:-
serializedを、 CreateMapIterator(value, key+value)、serialization options、 ownership type、serialization internal map、 realm、およびsessionでマッピングとして直列化する結果とする。
-
-
serializedが null でない場合、remote valueの
valueフィールドを serializedに設定する。
-
- value has a [[SetData]] internal slot
-
-
remote valueを、
ローカルエンド定義内のscript.SetRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、 そうでなければ省略されたマップとする。 -
serialization internal map、 remote valueおよびvalueで必要なら内部 ID を設定する。
-
serializedを null とする。
-
known objectが
falseであり、かつserialization options["maxObjectDepth"]が 0 でない場合、次の手順を実行する:-
serializedを、 CreateSetIterator(value, value)、serialization options、 ownership type、serialization internal map、 realm、および sessionでリストとして直列化する結果とする。
-
-
serializedが null でない場合、remote valueの
valueフィールドを serializedに設定する。
-
- value has a [[WeakMapData]] internal slot
- remote valueを、
ローカルエンド定義内のscript.WeakMapRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has a [[WeakSetData]] internal slot
- remote valueを、
ローカルエンド定義内のscript.WeakSetRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has a [[GeneratorState]] internal slot or [[AsyncGeneratorState]] internal slot
- remote valueを、
ローカルエンド定義内のscript.GeneratorRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has an [[ErrorData]] internal slot
- remote valueを、
ローカルエンド定義内のscript.ErrorRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has a [[ProxyHandler]] internal slot and a [[ProxyTarget]] internal slot
- remote valueを、
ローカルエンド定義内のscript.ProxyRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - IsPromise(value)
- remote valueを、
ローカルエンド定義内のscript.PromiseRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has a [[TypedArrayName]] internal slot
- remote valueを、
ローカルエンド定義内のscript.TypedArrayRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value has an [[ArrayBufferData]] internal slot
- remote valueを、
ローカルエンド定義内のscript.ArrayBufferRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - value is a platform object that implements
NodeList - remote valueを、
script.NodeListRemoteValue、handle id、known object、 value、 serialization options、ownership type、serialization internal map、 realm、およびsessionでArray-like として直列化する結果とする。 - value is a platform object that implements
HTMLCollection - remote valueを、
script.HTMLCollectionRemoteValue、handle id、known object、value、 serialization options、ownership type、known object、 serialization internal map、 realm、およびsessionでArray-like として直列化する結果とする。 - value is a platform object that implements
Node -
-
shared idを、valueおよびsessionでnode の shared id を取得する結果とする。
-
remote valueを、
ローカルエンド定義内のscript.NodeRemoteValue生成規則に一致し、sharedIdプロパティが、shared idが null でなければそれに設定され、そうでなければ省略され、handleプロパティが、handle idが null でなければそれに設定され、 そうでなければ省略されたマップとする。 -
serialization internal map、 remote valueおよびvalueで必要なら内部 ID を設定する。
-
serializedを null とする。
-
known objectが
falseである場合、次の手順を実行する:-
serializedをマップとする。
-
serialized["
nodeType"]をGet(value, "nodeType")に設定する。 -
node valueをGet(value, "nodeValue")に設定する。
-
node valueが null でない場合、 serialized["
nodeValue"]をnode valueに設定する。 -
serialized["
childNodeCount"]をchild node countに設定する。 -
serialization options["
maxDomDepth"]が 0 に等しい場合、またはvalueがShadowRootを実装し、 かつserialization options["includeShadowTree"]が "none" である場合、 またはserialization options["includeShadowTree"] が "open" であり、かつvalueのmodeが "closed" である場合、childrenを null とする。そうでなければ、childrenを空の リストとし、valueの children内の各 node childについて:
-
child serialization optionsを、 serialization optionsの複製とする。
-
child serialization options["
maxDomDepth"]が null でない場合、child serialization options["maxDomDepth"]をchild serialization options["maxDomDepth"] - 1 に設定する。 -
serializedを、 child、child serialization options、 ownership type、 serialization internal map、realm、および sessionでリモート値として 直列化する結果とする。
-
serializedをchildrenに付加する。
-
-
childrenが null でない場合、 serialized["
children"]をchildrenに設定する。 -
valueが
Elementを実装する場合:-
attributesを新しいマップとする。
-
valueの属性リスト内の各attributeについて:
-
serialized["
attributes"]を attributesに設定する。 -
shadow rootを、valueのshadow rootとする。
-
shadow rootが null である場合、serialized shadowを null とする。 そうでなければ、次のサブ手順を実行する:
-
serialized shadowを、 shadow root、 serialization options、ownership type、serialization internal map、 realm、およびsessionで リモート値として 直列化する結果とする。
-
-
serialized["
shadowRoot"]を serialized shadowに設定する。
-
-
valueが
ShadowRootを実装する場合、 serialized["mode"] をvalueのmodeに設定する。
-
-
serializedが null でない場合、remote valueの
valueフィールドを serializedに設定する。
-
- value is a platform object that implements
WindowProxy -
-
windowを、valueの [[WindowProxy]] internal slotの値とする。
-
navigableを、windowのnavigableとする。
-
navigable idを、navigableのnavigable IDとする。
-
serializedを、
ローカルエンド定義内のscript.WindowProxyProperties生成規則に一致し、contextプロパティがnavigable idに設定されたマップとする。 -
remote valueを、
ローカルエンド定義内のscript.WindowProxyRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略され、valueプロパティがserializedに設定されたマップとする。
-
- value is a platform object
- 1. remote valueを、
ローカルエンド定義内のscript.ObjectRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - IsCallable(value)
- remote valueを、
ローカルエンド定義内のscript.FunctionRemoteValue生成規則に一致し、handleプロパティが、handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 - Otherwise:
-
-
remote valueを、
ローカルエンド定義内のscript.ObjectRemoteValue生成規則に一致し、handleプロパティが handle idが null でなければそれに設定され、そうでなければ省略されたマップとする。 -
serialization internal map、 remote valueおよびvalueで必要なら内部 ID を設定する。
-
serializedを null とする。
-
known objectが
falseであり、かつserialization options["maxObjectDepth"]が 0 でない場合、次の手順を実行する:-
serializedを、 EnumerableOwnPropertyNames(value, key+value)、serialization options、 ownership type、serialization internal map、 realm、およびsessionでマッピングとして直列化する結果とする。
-
-
serializedが null でない場合、remote valueの
valueフィールドを serializedに設定する。
-
remote valueを返す
children
と子 node は異なるものである。childNodeCountは
childNodesを参照するべきか、またはchildrenCountに改名されるべきである。
-
remote value を production に一致する map とし、
handleproperty は handle id が null でない場合はそれに設定し、そうでなければ 省略する。 -
serialization internal map, remote value および value で Set internal ids if needed する。
-
known object が
falseで、かつ serialization options["maxObjectDepth"] が 0 でない場合:-
serialized を、 CreateArrayIterator(value, value), serialization options, ownership type, serialization internal map, realm, および session で serialize as a list した結果とする。
-
serialized が null でない場合、remote value の
valueフィールドを serialized に設定する。
-
-
remote value を返す
-
serialization options["
maxObjectDepth"] が null でない場合、 assert: serialization options["maxObjectDepth"] は 0 より大きい。 -
serialized を新しい list とする。
-
IteratorToList(GetIterator(iterable, sync)) 内の各 child value について:
-
child serialization options を serialization options の clone とする。
-
child serialization options["
maxObjectDepth"] が null でない場合、child serialization options["maxObjectDepth"] を child serialization options["maxObjectDepth"] - 1 に設定する。 -
serialized child を、 child value, child serialization options, ownership type, serialization internal map, realm, および session で serialize as a remote value した結果とする。
-
serialized child を serialized に append する。
-
-
serialized を返す
iterable, serialization options, ownership type, serialization internal map, realm, および session が与えられたときに mapping として serialize する には:
-
serialization options["
maxObjectDepth"] が null でない場合、 assert: serialization options["maxObjectDepth"] は 0 より大きい。 -
serialized を新しい list とする。
-
IteratorToList(GetIterator(iterable, sync)) 内の item について:
-
Assert: IsArray(item)
-
property を CreateListFromArrayLike(item) とする
-
Assert: property は size 2 の list である
-
key を property[0] とし、value を property[1] とする
-
child serialization options を serialization options の clone とする。
-
child serialization options["
maxObjectDepth"] が null でない場合、child serialization options["maxObjectDepth"] を child serialization options["maxObjectDepth"] - 1 に設定する。 -
Type(key) が String である場合、serialized key を child key とし、 そうでなければ serialized key を、 child key, child serialization options, ownership type, serialization internal map, realm, および session で serialize as a remote value した結果とする。
-
serialized value を、 value, child serialization options, ownership type, serialization internal map, realm, および session で serialize as a remote value した結果とする。
-
serialized child を («serialized key, serialized value») とする。
-
serialized child を serialized に append する。
-
-
serialized を返す
7.6.3.15. script.ResultOwnership 型
script.ResultOwnership="root"/"none"
script.ResultOwnership は、serialized value
ownership がどのように扱われるかを指定する。
7.6.3.16. script.SerializationOptions 型
script.SerializationOptions= { ?maxDomDepth: (js-uint / null) .default 0, ?maxObjectDepth: (js-uint / null) .default null, ?includeShadowTree: ("none"/"open"/"all") .default "none", }
script.SerializationOptionsは、ECMAScript オブジェクトをどのように
直列化するかを指定できるようにする。
7.6.3.17. script.SharedId 型
script.SharedId = text;
script.SharedId型は、任意の realm(Sandbox Realmを含む)で
使用可能な DOM Nodeへの参照を表す。
7.6.3.18. script.StackFrame 型
script.StackFrame= {columnNumber: js-uint,functionName: text,lineNumber: js-uint,url: text, }
スタックトレース内のフレームは、StackFrame
オブジェクトにより表される。これは、スクリプトの URL を表すurlプロパティ、
実行中の関数の名前を表すfunctionNameプロパティ、および
実行されたコードの行番号と列番号を表すlineNumberおよびcolumnNumber
プロパティを持つ。
7.6.3.19. script.StackTrace 型
script.StackTrace= {callFrames: [*script.StackFrame], }
script.StackTrace型は、スクリプト実行中のある時点における JavaScript スタックを表す。
注記: スタックフレームのリストを取得する方法、および そのリストのプロパティの詳細は十分に規定されていないため、ここでの詳細は実装定義である。
実装は、スタック フレームのリストを生成できるものと仮定される。これは、JavaScript 呼び出しスタック内の各項目に 1 つのエントリを持つリストであり、最も新しいものから始まる。 各エントリは、スクリプト script内の文または式の実行に対応する単一のスタック フレームであり、次のフィールドを含む:
- script url
- scriptを含むリソースの URL
- function
- 実行中の関数の名前
- line number
- scriptを含むリソースの先頭を基準とした、 実行されたコードの 0 始まりの行番号。
- column number
- scriptを含むリソース内の行の開始位置を基準とした、 実行されたコードの 0 始まりの列番号。
スタックフレームのリストstackで、スタックトレースを 構築するには:
-
call framesを新しいリストとする。
-
stack内の各スタックフレーム frameについて、 最も最近実行されたフレームから始めて、次の手順を実行する:
-
urlを、frameのscript urlの URLが与えられたときにURL シリアライザーを実行した結果とする。
-
frame infoを、
urlフィールドがurlに、functionNameフィールドがframeのfunctionに、lineNumberフィールドがframeのline numberに、columnNumberフィールドがframeの column numberに設定された、script.StackFrame生成規則に一致する新しいマップとする。
-
-
frame infoをcall framesに付加する。
-
stack traceを、
callFramesプロパティがcall framesに設定された、script.StackTrace生成規則に一致する新しいマップとする。 -
stack traceを返す。
現在のスタック トレースは、実行中の 実行コンテキストのコールスタックを表すスタック フレームのリストが与えられたときのスタックトレースを構築する結果である。
例外、または型
throwのCompletion Recordである
exceptionによる例外の
スタックトレースは、次により与えられる:
-
exceptionが例外として投げられた値である場合、record を、exceptionを投げるために作成されたCompletion Recordとする。そうでなければ、 recordをexceptionとする。
-
stackを、 recordが作成された時点の実行に対応するスタックフレームのリストとする。
-
stackが与えられたときのスタックトレースを構築する結果を返す。
7.6.3.20. script.Source 型
script.Source= {realm: script.Realm, ?context: browsingContext.BrowsingContext, ?userContext: browser.UserContext }
script.Source型は、スクリプト関連イベントが発生した
script.Realmと、任意のbrowsingContext.BrowsingContextおよび関連する
browser.UserContextを表す。
-
realmをsource realmのRealm IDとする。
-
environment settingsを、環境設定オブジェクトで、その Realm 実行コンテキストの Realm コンポーネントが source realmであるものとする。
-
environment settingsが関連付けられた
Documentを持つ場合:-
documentを environment settings の関連付けられた
Documentとする。 -
navigableをdocumentのノードナビゲータブルとする。
-
navigable idを、navigableが null でない場合の navigableのナビゲータブル IDとする。
-
user context idを、 navigableの関連付けられたユーザーコンテキストのユーザーコンテキスト IDとする。
そうでなければ、navigableを null とする。
-
-
sourceを、
script.Source生成規則に一致し、realmフィールドがrealmに設定され、contextフィールドが navigableが null でない場合はnavigable idに設定され、そうでなければ未設定であり、 かつuserContextフィールドがuser context idに設定されるのは |navigable が null でない場合であり、そうでなければ未設定であるマップとする。 -
sourceを返す。
7.6.3.21. script.Target 型
script.RealmTarget= {realm: script.Realm }script.ContextTarget= {context: browsingContext.BrowsingContext, ?sandbox: text }script.Target= ( script.ContextTarget / script.RealmTarget )
script.Target型は、
script.RealmまたはbrowsingContext.BrowsingContextのいずれかである値を表す。
これは、navigable 識別子が、その navigable のアクティブ文書に関連付けられた realm の代わりになる場合に有用である。
-
navigableを、navigable idを用いて試行してナビゲータブルを 取得する 結果とする。
-
sandboxが null または空文字列である場合:
-
documentをnavigableのアクティブな文書とする。
-
environment settingsを、その環境設定オブジェクトであって、その 関連グローバルオブジェクトの関連付けられた
Documentが documentであるものとする。 -
realmをenvironment settingsのRealm 実行コンテキストの Realm コンポーネントとする。
-
-
そうでなければ、realmを、sandboxおよび navigableを与えて試行して サンドボックス Realm を取得または作成する結果とする。
-
データrealmとともに成功を返す
-
targetが
script.ContextTarget生成規則に一致する場合:-
sandboxを null とする。
-
targetが"
sandbox"を含む場合、 sandboxを target["sandbox"]に設定する。 -
realmを、target["
context"]およびsandboxを用いてナビゲータブルから Realm を取得する結果とする。
-
-
そうでなければ:
-
表明: targetは
script.RealmTarget生成規則に一致する。 -
realm idを targetの
realmフィールドの値とする。 -
realmを、realm idを与えてRealm を取得する結果とする。
-
-
データrealmとともに成功を返す
7.6.4. コマンド
7.6.4.1. script.addPreloadScript コマンド
script.addPreloadScriptコマンドは、プリロードスクリプトを追加する。
- コマンド型
-
script.AddPreloadScript= (method:"script.addPreloadScript",params: script.AddPreloadScriptParameters )script.AddPreloadScriptParameters= {functionDeclaration: text, ?arguments: [*script.ChannelValue], ?contexts: [+browsingContext.BrowsingContext], ?userContexts: [+browser.UserContext], ?sandbox: text } - 戻り値型
-
script.AddPreloadScriptResult= {script: script.PreloadScript }
-
command parametersが含む "
userContexts" かつcommand parametersが含む "contexts"場合、 エラーをエラー コード 無効な引数として返す。 -
function declarationをcommand parametersの
functionDeclarationフィールドとする。 -
argumentsを、存在する場合はcommand parametersの
argumentsフィールドとし、そうでなければ空のリストとする。 -
user contextsを集合とする。
-
navigablesを null とする。
-
command parametersの
contextsフィールドが存在する場合:-
navigablesを空の集合に設定する。
-
command parameters["
contexts"]の各navigable idについて-
navigableを、navigable idを用いて試行してナビゲータブルを取得する 結果とする。
-
navigableがトップレベルナビゲータブルでない場合、エラーをエラーコード 無効な引数として返す。
-
navigableをnavigablesに付加する。
-
-
-
そうでなければ、command parametersが含む
userContexts場合:-
user contextsを、command parameters["
userContexts"]を用いて集合を 作成する結果に設定する。 -
user contextsの各user context idについて:
-
user contextを、user context idを用いてユーザーコンテキストを取得する結果に設定する。
-
user contextが null の場合、エラーをエラーコード 該当するユーザーコンテキストなしとして返す。
-
-
-
sandboxを、存在する場合はcommand parameters内の"
sandbox"フィールドの値とし、そうでなければ null とする。 -
scriptをUUIDの文字列表現とする。
-
preload script mapをsessionのプリロードスクリプトマップとする。
-
preload script map[script]を、
function declarationfunction declaration、argumentsarguments、contextsnavigables、sandboxsandbox、およびuser contextsuser contextsを持つ構造体に設定する。 -
script.AddPreloadScriptResultに一致し、scriptフィールドがscriptに設定された新しいマップを返す。
7.6.4.2. script.disown コマンド
script.disownコマンドは、与えられたハンドルの所有を放棄する。 これは、他のハンドルや強い ECMAScript 参照が存在し得るため、 ハンドルされたオブジェクトがガベージコレクトされることを保証しない。
- コマンド型
-
script.Disown= (method:"script.disown",params: script.DisownParameters )script.DisownParameters= {handles: [*script.Handle]target: script.Target; } - 戻り値型
-
script.DisownResult= EmptyResult
-
realmを、command parametersの
targetフィールドの値を 与えて試行してターゲットから Realm を取得する 結果とする。 -
handlesをcommand parametersの
handlesフィールドの値とする。 -
handlesの各handle idについて:
-
handle mapをrealmのハンドルオブジェクトマップとする
-
handle mapがhandle idを含む場合、handle idを handle mapから削除する。
-
-
データ null とともに成功を返す。
7.6.4.3. script.callFunction コマンド
script.callFunctionコマンドは、与えられた realm 内で、 提供された関数を与えられた引数で呼び出す。
RealmInfoは realm または navigable のいずれかであり得る。
注記:
functionDeclaration内のアロー関数の場合、
this引数は関数のthis束縛に影響しない。
- コマンド型
-
script.CallFunction= (method:"script.callFunction",params: script.CallFunctionParameters )script.CallFunctionParameters= {functionDeclaration: text,awaitPromise: bool,target: script.Target, ?arguments: [*script.LocalValue], ?resultOwnership: script.ResultOwnership, ?serializationOptions: script.SerializationOptions, ?this: script.LocalValue, ?userActivation: bool .default false, } - 戻り値型
-
script.CallFunctionResult= script.EvaluateResult
TODO: script.evaluate で説明されているように、 timeout 引数を追加する。
与えられたrealm、serialized arguments list およびsessionを用いて引数を デシリアライズするには:
-
deserialized arguments listを空のリストとする。
-
serialized arguments listの各serialized argumentについて:
-
deserialized argumentを、serialized argument、realmおよびsessionを 与えてローカル値をデシリアライズすることを試行した結果とする。
-
deserialized argumentをdeserialized arguments listに付加する。
-
-
データdeserialized arguments listとともに成功を返す。
注記: function declarationは 丸括弧で囲まれて評価される。
-
bypassDisabledScriptingを true とする。
-
parenthesized function declarationを «"
(", function declaration, ")"»を連結したものとする -
function scriptを、 parenthesized function declaration、environment settings、base URL、 optionsおよびbypassDisabledScriptingを用いてクラシックスクリプトを作成した結果とする。
-
environment settingsを用いてスクリプトを実行する準備をする。
-
function body evaluation statusをScriptEvaluation(function scriptのレコード)とする。
-
environment settingsを用いてスクリプト実行後の後処理を行う。
-
function body evaluation statusを返す。
リモートエンド手順は、sessionおよびcommand parametersを用いて次のとおりである:
-
realmを、command parametersの
targetフィールドの値を 与えてターゲットから Realm を取得することを試行した結果とする。 -
realm idをrealmのRealm IDとする。
-
environment settingsを、環境設定オブジェクトで、その Realm 実行コンテキストの Realm コンポーネントが realmであるものとする。
-
command argumentsをcommand parametersの
argumentsフィールド の値とする。 -
deserialized argumentsを空のリストとする。
-
command argumentsが null でない場合、deserialized argumentsを、 realm、 command argumentsおよびsessionを与えて引数をデシリアライズすることを試行した結果に設定する。
-
this parameterをcommand parametersの
thisフィールド の値とする。 -
this objectを null とする。
-
this parameterが null でない場合、this objectを、this parameter、realmおよびsessionを与えて ローカル値をデシリアライズすることを試行した結果に設定する。
-
function declarationをcommand parametersの
functionDeclarationフィールドの値とする。 -
await promiseを command parametersの
awaitPromiseフィールドの値とする。 -
serialization optionsを、存在する場合は command parametersの
serializationOptionsフィールドの値とし、 そうでなければ、script.SerializationOptions生成規則に一致し、フィールドがそれぞれのデフォルト値に設定されたマップとする。 -
result ownershipを、存在する場合はcommand parametersの
resultOwnershipフィールドの値とし、 そうでなければnoneとする。 -
base URLをenvironment settingsのAPI ベース URLとする。
-
optionsをデフォルトのスクリプトフェッチオプションとする。
-
function body evaluation statusを、 function declaration、 environment settings、base URL、およびoptionsを用いて関数本体を評価した結果とする。
-
function body evaluation status.[[Type]]が
throwである場合:-
exception detailsを、 realm、function body evaluation status、result ownershipおよびsessionを与えて例外 詳細を取得した結果とする。
-
script.EvaluateResultException生成規則に一致し、exceptionDetailsフィールドが exception detailsに設定された新しいマップを返す。
-
-
function objectをfunction body evaluation status.[[Value]]とする。
-
IsCallable(function object)が
falseである場合: -
command parameters["
userActivation"]が true の場合、アクティベーション通知手順を実行する。 -
environment settingsを用いてスクリプトを実行する準備をする。
-
evaluation statusを Call(function object, this object, deserialized arguments)に設定する。
-
evaluation status.[[Type]]が
normalであり、かつawait promiseがtrueであり、かつIsPromise(evaluation status.[[Value]])である場合:-
evaluation statusを Await(evaluation status.[[Value]])に設定する。
-
-
environment settingsを用いてスクリプト実行後の後処理を行う。
-
evaluation status.[[Type]]が
throwである場合:-
exception detailsを、 realm、evaluation status、result ownershipおよび sessionを与えて例外 詳細を取得した結果とする。
-
script.EvaluateResultException生成規則に一致し、exceptionDetailsフィールドが exception detailsに設定された新しいマップを返す。
-
-
表明: evaluation status.[[Type]]は
normalである。 -
resultを、 evaluation status.[[Value]]、serialization options、result ownership、 シリアライズ内部マップとして新しいマップ、realmおよび sessionを用いてリモート値として シリアライズした結果とする。
-
script.EvaluateResultSuccess生成規則に一致し、realmフィールドがrealm idに設定され、 かつresultフィールドがresultに設定された新しいマップを返す。
7.6.4.4. script.evaluate コマンド
script.evaluate コマンドは、与えられた realm 内で提供された script を evaluate する。便宜上、realm の代わりに navigable を提供でき、 その場合に使用される realm は browsing context の active document の realm である。
この method は、提供された script を実行した値を返す。ただし、それが
promise を返し、awaitPromise が true である場合は、その promise の resolved value が
返される。
- コマンド型
-
script.Evaluate= (method:"script.evaluate",params: script.EvaluateParameters )script.EvaluateParameters= {expression: text,target: script.Target,awaitPromise: bool, ?resultOwnership: script.ResultOwnership, ?serializationOptions: script.SerializationOptions, ?userActivation: bool .default false, } - 返却型
-
script.EvaluateResult
TODO: timeout argument を追加する。これがどのように機能すべきかは完全には明確でない。 Chrome では timeout は promise resolve step には適用されないように見えるが、 それはおそらく clients が望むものではない。
リモートエンド手順は、sessionおよびcommand parametersを与えたとき、次のとおりである:
-
realmを、command parametersの
targetフィールドの値を与えて試行してターゲットから Realm を取得する 結果とする。 -
realm idをrealmのRealm IDとする。
-
environment settingsを、その Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
sourceをcommand parametersの
expressionフィールドの値とする。 -
await promiseを command parametersの
awaitPromiseフィールドの値とする。 -
serialization optionsを、存在する場合は command parametersの
serializationOptionsフィールドの値とし、 そうでなければ、script.SerializationOptions生成規則に一致し、フィールドがそれぞれのデフォルト値に設定されたマップとする。 -
result ownershipを、存在する場合はcommand parametersの
resultOwnershipフィールドの値とし、 そうでなければnoneとする。 -
optionsをデフォルトのスクリプトフェッチオプションとする。
-
base URLをenvironment settingsのAPI ベース URLとする。
-
bypassDisabledScriptingを true とする。
-
scriptを、source、 environment settings、base URL、optionsおよび bypassDisabledScriptingを用いてクラシックスクリプトを作成する結果とする。
-
command parameters["
userActivation"]が true の場合、アクティベーション通知手順を実行する。 -
environment settingsを用いてスクリプトを実行する準備をする。
-
evaluation statusをScriptEvaluation(scriptの レコード)に設定する。
-
evaluation status.[[Type]]が
normalであり、await promiseが true であり、かつIsPromise(evaluation status.[[Value]])である場合:-
evaluation statusをAwait(evaluation status.[[Value]])に設定する。
-
-
environment settingsを用いてスクリプト実行後の後処理を行う。
-
evaluation status.[[Type]]が
throwである場合:-
exception detailsを、 realm、evaluation status、result ownershipおよび sessionを用いて例外 詳細を取得する結果とする。
-
script.EvaluateResultException生成規則に一致し、realmフィールドがrealm idに設定され、かつexceptionDetailsフィールドがexception detailsに設定された新しいマップを返す。
-
-
表明: evaluation status.[[Type]]は
normalである。 -
resultを、 evaluation status.[[Value]]、serialization options、result ownership、 シリアライズ内部マップとしての新しいマップ、realmおよび sessionを用いてリモート値として シリアライズする結果とする。
-
script.EvaluateResultSuccess生成規則に一致し、realmフィールドがrealm idに設定され、かつresultフィールドがresultに設定された新しいマップを返す。
7.6.4.5. script.getRealms コマンド
script.getRealmsコマンドは、 すべての realm のリストを返す。任意で、特定の型のrealm、またはnavigableのアクティブ文書に関連付けられた realm に絞り込める。
- コマンド型
-
script.GetRealms= (method:"script.getRealms",params: script.GetRealmsParameters )script.GetRealmsParameters= { ?context: browsingContext.BrowsingContext, ?type: script.RealmType, } - 戻り値型
-
script.GetRealmsResult= {realms: [*script.RealmInfo] }
-
environment settingsを、実行準備完了フラグが設定されているすべての環境設定オブジェクトのリストとする。
-
command parametersが
contextを含む場合:-
navigableを、command parameters["
context"]を用いて ナビゲータブルを 取得することを試行した結果とする。 -
documentをnavigableのアクティブな文書とする。
-
navigable environment settingsをリストとする。
-
environment settingsの各settingsについて:
-
次のいずれかの条件が満たされる場合:
-
settingsの 関連グローバルオブジェクトの関連付けられた
Documentが documentである -
settingsによって指定されたグローバルオブジェクトが、 その所有者集合内にdocumentを持つ
WorkerGlobalScopeである
settingsをnavigable environment settingsに付加する。
-
-
-
environment settingsをnavigable environment settingsに設定する。
-
-
realmsをリストとする。
-
environment settingsの各settingsについて:
-
realm infoを、settingsを与えてRealm 情報を取得した 結果とする。
-
command parametersが
typeを含み、かつrealm info["type"]がcommand parameters["type"]と等しくない場合、続行する。 -
realm infoが null でない場合、realm infoをrealmsに付加する。
-
-
bodyを、
script.GetRealmsResult生成規則に一致し、realmsフィールドがrealmsに設定されたマップとする。 -
データbodyとともに成功を返す。
これを拡張して、 たとえばネストされたワーカーについて Realm の親も許可するか? あるいはすべての祖先ワーカーを取得する。
7.6.4.6. script.removePreloadScript コマンド
script.removePreloadScriptコマンドは、 プリロードスクリプトを除去する。
- コマンド型
-
script.RemovePreloadScript= (method:"script.removePreloadScript",params: script.RemovePreloadScriptParameters )script.RemovePreloadScriptParameters= {script: script.PreloadScript } - 戻り値型
-
script.RemovePreloadScriptResult= EmptyResult
-
scriptをcommand parameters内の"
script"フィールドの値とする。 -
preload script mapをsessionのプリロードスクリプトマップとする。
-
preload script mapがscriptを含まない場合、 エラーをエラー コード 該当するスクリプトなしとして返す。
-
削除する scriptをpreload script mapから。
-
null を返す
7.6.5. イベント
7.6.5.1. script.message イベント
- イベント型
-
script.Message= (method:"script.message",params: script.MessageParameters )script.MessageParameters= {channel: script.Channel,data: script.RemoteValue,source: script.Source, }
-
environment settingsを、その Realm 実行コンテキストの Realm コンポーネントが realmである環境設定オブジェクトとする。
-
related navigablesを、environment settingsを与えて関連する ナビゲータブルを取得した結果とする。
-
session、"
script.message" およびrelated navigablesを与えたときにイベントが 有効である場合:-
channel propertiesが "
serializationOptions"を含む場合、serialization optionsを channel propertiesのserializationOptionsフィールドの値とする。そうでなければ、serialization optionsをscript.SerializationOptions生成規則に一致し、 フィールドがそれぞれのデフォルト値に設定されたマップとする。 -
channel propertiesが"
ownership"を含む場合、 ownership typeをchannel properties["ownership"]とする。 そうでなければ、 ownership typeを"none"とする。 -
dataを、message、serialization options、ownership type、 シリアライズ内部マップとして新しい マップ、およびrealmを与えてリモート値としてシリアライズした結果とする。
-
sourceを、realmを用いてソースを取得した結果とする。
-
paramsを、
script.MessageParameters生成規則に一致し、channelフィールドがchannel properties["channel"]に、dataフィールドがdataに、かつsourceフィールドがsourceに設定されたマップとする。 -
bodyを、
script.Message生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。 -
sessionおよびbodyを用いてイベントを 発行する。
-
7.6.5.2. script.realmCreated イベント
- イベント型
-
script.RealmCreated= (method:"script.realmCreated",params: script.RealmInfo )
ウィンドウ環境設定 オブジェクトを設定する、ワーカー環境設定 オブジェクトを設定する、またはワークレット環境設定 オブジェクトを設定するアルゴリズムのいずれかが呼び出されたとき、設定 オブジェクトを返す直前に:
-
environment settingsを、新しく作成された環境設定オブジェクトとする。
-
realm infoを、environment settingsを与えてRealm 情報を取得する結果とする。
-
realm infoが null の場合、返る。
-
related navigablesを、environment settingsを与えて関連する ナビゲータブルを取得する結果とする。
-
bodyを、
script.RealmCreated生成規則に一致し、paramsフィールドがrealm infoに設定されたマップとする。 -
"
script.realmCreated"およびrelated navigablesを与えたときのイベントが有効になっている セッションの集合内の各sessionについて:-
sessionおよびbodyを用いてイベントを 発行する。
-
session、navigablesおよびinclude globalを与えたとき、リモートエンド購読手順は購読優先度 2 であり、次のとおりである:
-
environment settingsを、実行準備完了フラグが設定されているすべての環境設定オブジェクトのリストとする。
-
environment settingsの各settingsについて:
-
related navigablesを新しい集合とする。
-
settingsの 関連グローバルオブジェクトの関連付けられた
DocumentがDocumentである場合:-
navigableをsettingsの関連グローバルオブジェクトの 関連付けられた
Documentの ノードナビゲータブルとする。 -
navigableが null の場合、続行する。
-
top-level traversibleをnavigableのトップレベルナビゲータブルとする。
-
top-level traversibleがnavigables内にない場合、続行する。
-
top-level traversibleをrelated navigablesに付加する。
そうでなければ、include globalが false の場合、続行する。
-
-
realm infoを、settingsを与えてRealm 情報を取得する 結果とする。
-
realm infoが null の場合、続行する。
-
bodyを、
script.RealmCreated生成規則に一致し、paramsフィールドがrealm infoに設定されたマップとする。 -
session、 "
script.realmCreated"およびrelated navigablesを与えたときにイベントが 有効である場合:-
sessionおよびbodyを用いてイベントを 発行する。
-
-
7.6.5.3. script.realmDestroyed イベント
- イベント型
-
script.RealmDestroyed= (method:"script.realmDestroyed",params: script.RealmDestroyedParameters )script.RealmDestroyedParameters= {realm: script.Realm }
-
related navigablesを空の集合とする。
-
documentのナビゲータブルをrelated navigablesに付加する。
-
documentのワークレットグローバルスコープ内の各worklet global scopeについて:
-
realmをworklet global scopeの関連 Realmとする。
-
realm idをrealmのRealm IDとする。
-
paramsを、
script.RealmDestroyedParameters生成規則に一致し、realmフィールドがrealm idに設定されたマップとする。 -
bodyを、
script.RealmDestroyed生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。 -
"
script.realmDestroyed"およびrelated navigablesを 与えたときのイベントが有効になっている セッションの集合内の各sessionについて:-
sessionおよびbodyを用いてイベントを 発行する。
-
-
-
environment settingsを、その 関連グローバルオブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmをenvironment settingsのRealm 実行コンテキストの Realm コンポーネントとする。
-
realm idをrealmのRealm IDとする。
-
paramsを、
script.RealmDestroyedParameters生成規則に一致し、realmフィールドがrealm idに設定されたマップとする。 -
bodyを、
script.RealmDestroyed生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。 -
"
script.realmDestroyed"およびrelated navigablesを与えたときのイベントが有効になっている セッションの集合内の各sessionについて:-
sessionおよびbodyを用いてイベントを 発行する。
-
ワーカーイベントループ event loopが破棄されるたびに、ワーカーが ライフサイクルの終端に達したためであるか、またはワーカーを終了するアルゴリズムによって途中で終了したためであるかにかかわらず:
-
environment settingsを、event loopが担当イベントループである環境設定オブジェクトとする。
-
related navigablesを、environment settingsを与えて関連する ナビゲータブルを取得する結果とする。
-
realmをenvironment settingsの環境設定オブジェクトの Realmとする。
-
realm idをrealmのRealm IDとする。
-
paramsを、
script.RealmDestroyedParameters生成規則に一致し、realmフィールドがrealm idに設定されたマップとする。 -
bodyを、
script.RealmDestroyed生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。
7.7. storage モジュール
storageモジュールは、ストレージに関連する機能および イベントを含む。
ストレージパーティションは、 ユーザーエージェントがCookieやローカルストレージなどの永続データを 編成できる名前空間である。
ストレージパーティション キーは、マップであり、ストレージパーティションを一意に識別する。
7.7.1. 定義
StorageCommand = (
storage.DeleteCookies //
storage.GetCookies //
storage.SetCookie
)
StorageResult = (
storage.DeleteCookiesResult /
storage.GetCookiesResult /
storage.SetCookieResult
)
7.7.2. 型
7.7.2.1. storage.PartitionKey 型
storage.PartitionKey= { ?userContext: text, ?sourceOrigin: text, Extensible, }
storage.PartitionKey型は、ストレージパーティションキーを表す。
次の標準ストレージパーティションキー属性の表は、 よく知られた意味を持つ属性を列挙し、リモートエンドが サポートすることを選択できる。実装は追加の拡張ストレージパーティションキー属性を定義してもよい。
| 属性 | 定義 |
|---|---|
"userContext"
| ユーザーコンテキスト ID |
"sourceOrigin"
| ストレージパーティションにアクセスできるリソースのorigin の直列化 |
リモートエンドは、任意の数の拡張ストレージパーティションキー 属性をサポートしてもよい。他の実装との競合を避けるため、これらの 属性は、ベンダーおよびユーザーエージェントの一意な識別子で始まり、 その後に U+003A (:) が続かなければならない。
リモートエンドは、0 個以上のエントリーを含むストレージ パーティション キー属性のデフォルト値のマップを持つ。各キーは、 ストレージパーティション キーが標準ストレージパーティションに対応する場合は標準ストレージパーティションキー 属性の表のメンバーでなければならず、対応しない場合は 拡張ストレージパーティションキー属性 でなければならず、その値は、ユーザーが明示的な値を 提供しなかった場合に使用される、そのパーティションキーのデフォルト値を表す。正確なエントリーは 実装定義であり、実装が採用するストレージパーティショニングによって 決定される。
リモートエンドは、0 個以上のエントリーを含む必須パーティションキー 属性のリストを持つ。各キーは、 ストレージパーティション キーが標準ストレージパーティションに対応する場合は標準ストレージパーティションキー 属性の表のメンバーでなければならず、対応しない場合は 拡張ストレージパーティションキー属性 でなければならない。正確な エントリーは実装定義であり、実装が採用するストレージ パーティショニングによって決定される。このリストには、デフォルトが利用できないパーティション キーのみが含まれる。したがって、このリストはストレージパーティション キー属性のデフォルト値のキーとエントリーを共有してはならない。
-
deserialized filterを空のマップとする。
-
filter内の各name → valueについて:
-
deserialized nameを、 Cookie 変換用の表内の JSON キー nameに対応するフィールド名とする。
-
nameが"
value"である場合、deserialized valueを valueを用いてプロトコルバイトをデシリアライズする結果に設定し、 そうでなければdeserialized valueをvalueとする。 -
deserialized filter[deserialized name]をdeserialized valueに設定する。
-
-
deserialized filterを返す。
-
partition specが null の場合:
-
partition specを空のマップに設定する。
-
-
そうでなければ、partition spec["
type"]が"context"である場合:-
navigableを、partition spec["
context"]を与えて試行して ナビゲータブルを 取得する結果とする。 -
partition keyを、navigableの関連付けられたストレージパーティションのキーとする。
-
データpartition keyとともに成功を返す。
-
-
partition keyを空のマップとする。
-
ストレージ パーティションキー属性のデフォルト値内の各name → default valueについて:
-
リモートエンドの必須パーティションキー属性内の各nameについて:
-
partition spec[name]が存在する場合:
-
partition key][name]を partition spec[name]に設定する。
-
-
そうでなければ:
-
エラーをエラーコード 指定不足のストレージ パーティションとして返す。
-
-
-
データpartition keyとともに成功を返す。
-
storage partition keyが既存のストレージパーティションを一意に識別する場合:
-
storeを、そのストレージパーティションのCookie ストアとする。
-
データstoreとともに成功を返す。
-
-
エラーをエラー コード 該当するストレージパーティションなしとして返す。
-
filter内の各name → valueについて:
-
stored cookie[name]がvalueと等しくない場合:
-
false を返す。
-
-
-
true を返す。
-
cookiesを新しいリストとする。
-
deserialized filterを、filterでfilter を逆直列化する結果に設定する。
-
cookie store内の各stored cookieについて:
-
stored cookieおよびdeserialized filterでCookie と照合する結果が true である場合:
-
stored cookieをcookiesに付加する。
-
-
-
cookiesを返す。
7.7.3. コマンド
7.7.3.1. storage.getCookies コマンド
storage.getCookiesコマンドは、提供された一連のパラメーターと一致する 0 個以上のCookieを 取得する。
- コマンド型
-
storage.GetCookies= (method:"storage.getCookies",params: storage.GetCookiesParameters )storage.CookieFilter= { ?name: text, ?value: network.BytesValue, ?domain: text, ?path: text, ?size: js-uint, ?httpOnly: bool, ?secure: bool, ?sameSite: network.SameSite, ?expiry: js-uint, Extensible, }storage.BrowsingContextPartitionDescriptor= {type:"context",context: browsingContext.BrowsingContext }storage.StorageKeyPartitionDescriptor= {type:"storageKey", ?userContext: text, ?sourceOrigin: text, Extensible, }storage.PartitionDescriptor= ( storage.BrowsingContextPartitionDescriptor / storage.StorageKeyPartitionDescriptor )storage.GetCookiesParameters= { ?filter: storage.CookieFilter, ?partition: storage.PartitionDescriptor, } - 戻り値型
-
storage.GetCookiesResult= {cookies: [*network.Cookie],partitionKey: storage.PartitionKey, }
-
filterを、command parametersの
filterフィールドの値が 存在する場合はその値とし、存在しない場合は空のマップとする。 -
partition specを、 command parametersの
partitionフィールドの値が存在する場合はその値とし、存在しない場合は null とする。 -
partition keyを、partition specを用いて試行してストレージパーティション指定を展開する結果とする。
-
storeを、partition keyを用いて試行してCookie ストアを取得する結果とする。
-
cookiesを、storeおよび filterを用いて一致する Cookie を取得する結果とする。
-
serialized cookiesを新しいリストとする。
-
cookies内の各cookieについて:
-
serialized cookieを、cookieを与えてCookie をシリアライズする結果とする。
-
serialized cookieをserialized cookiesに付加する。
-
-
bodyを、
storage.GetCookiesResult生成規則に一致し、cookiesフィールドがserialized cookiesに設定され、かつpartitionKeyフィールドがpartition keyに設定されたマップとする。 -
データbodyとともに成功を返す。
7.7.3.2. storage.setCookie コマンド
storage.setCookieコマンドは、Cookie ストア内に新しいCookieを作成し、 [COOKIES]に従って一致する そのストア内の任意の Cookie を置き換える。
- コマンド型
-
storage.SetCookie= (method:"storage.setCookie",params: storage.SetCookieParameters, )storage.PartialCookie= {name: text,value: network.BytesValue,domain: text, ?path: text, ?httpOnly: bool, ?secure: bool, ?sameSite: network.SameSite, ?expiry: js-uint, Extensible, }storage.SetCookieParameters= {cookie: storage.PartialCookie, ?partition: storage.PartitionDescriptor, } - 戻り値型
-
storage.SetCookieResult= {partitionKey: storage.PartitionKey }
-
cookie specをcommand parametersの
cookieフィールドの値とする。 -
partition specを、 command parametersの
partitionフィールドの値が存在する場合はその値とし、存在しない場合は null とする。 -
partition keyを、partition specを用いて試行してストレージパーティション指定を展開する結果とする。
-
storeを、partition keyを用いて試行してCookie ストアを取得する結果とする。
-
deserialized valueを、cookie spec["
value"]を用いてプロトコルバイトをデシリアライズする結果とする。 -
store内に、Cookie 名 cookie spec["
name"]、 Cookie 値 deserialized value、Cookie ドメイン cookie spec["domain"]、およびCookie 変換用の表に列挙された 次の Cookie 概念の属性値リストを使用してCookie を作成する:- Cookie パス
-
cookie spec["
path"]が存在する場合はその値、そうでなければ"/"。 - Cookie secure only
-
cookie spec["
secure"]が存在する場合はその値、そうでなければ false。 - Cookie HTTP only
-
cookie spec["
httpOnly"]が存在する場合はその値、そうでなければ false。 - Cookie 有効期限
-
cookie spec["
expiry"]が存在する場合はその値、そうでなければ、これがセッション Cookie であることを 示すため未設定のままとする。注記: Cookie の有効期限値は、 Cookie の有効期間制限に従ってリモートエンドによって制限される場合がある。
- Cookie の同一サイト
-
cookie spec["
sameSite"]が存在する場合はその値、そうでなければ、同一サイトポリシーが定義されていないことを 示すため未設定のままとする。
この手順が Cookie を Cookie ストアに挿入せずに中止された場合、 エラーをエラー コード Cookie を設定できないとして返す。
-
bodyを、
storage.SetCookieResult生成規則に一致し、partitionKeyフィールドがpartition keyに設定されたマップとする。 -
データbodyとともに成功を返す。
7.7.3.3. storage.deleteCookies コマンド
storage.deleteCookiesコマンドは、提供された一連の パラメーターと一致する 0 個以上のCookieを除去する。
- コマンド型
-
storage.DeleteCookies= (method:"storage.deleteCookies",params: storage.DeleteCookiesParameters, )storage.DeleteCookiesParameters= { ?filter: storage.CookieFilter, ?partition: storage.PartitionDescriptor, } - 戻り値型
-
storage.DeleteCookiesResult= {partitionKey: storage.PartitionKey }
-
filterを、command parametersの
filterフィールドの値が 存在する場合はその値とし、存在しない場合は空のマップとする。 -
partition specを、 command parametersの
partitionフィールドの値が存在する場合はその値とし、存在しない場合は null とする。 -
partition keyを、試行してストレージパーティション指定を展開することにより得られた結果とし、 partition specを用いる。
-
storeを、試行してCookie ストアを取得することにより得られた結果とし、 partition keyを用いる。
-
cookiesを、一致する Cookie を取得することにより得られた結果とし、storeおよび filterを用いる。
-
cookies内の各cookieについて:
-
cookieをstoreから削除する。
-
-
bodyを、
storage.DeleteCookiesResult生成規則に一致し、partitionKeyフィールドがpartition keyに設定されたマップとする。 -
データbodyとともに成功を返す。
7.8. log モジュール
logモジュールは、ログ記録に関連する機能およびイベントを含む。
BiDi セッションは、ログイベントバッファを持つ。これは、 navigable IDから、そのコンテキストでまだ 発火されていないログイベントのリストへのマップである。ユーザーエージェントは、このバッファに最大サイズを課してもよい。ただし、 イベント A と B が同じコンテキスト内で発生し、A が B より前に発生し、かつ両方がバッファに追加された場合、 B のエントリは A のエントリより先に除去されてはならないという条件に従う。
session、navigablesおよびeventが与えられたとき、ログイベントを バッファするには:
-
bufferを、sessionのログイベントバッファとする。
-
navigable idsを新しいリストとする。
-
navigablesの各navigableについて:
-
navigableのnavigable IDを navigable idsに付加する。
-
-
navigable ids内の各navigable idについて:
-
other navigablesを空のリストとする
-
navigable ids内の各other idについて:
-
other idがnavigable idと等しくない場合、other idをother navigablesに付加する。
-
bufferがnavigable idを含まない場合、 buffer[navigable id]を新しいリストとする。
-
(event, other navigables)を buffer[navigable id]に付加する。
-
注記: 各イベントが 1 回だけ発火されるようにするため、 ここで他の navigable を保存する。実際には、これは複数の navigable と関連付けられ得る worker にのみ関係する。
これを browsing context またはトップレベル辿可能のどちらに キー付けするべきか? 違いは、イベントがフレーム内で発生し、その後ローカルエンドがトップレベル navigable のログイベントを購読する前に そのフレームがナビゲートされた場合に何が起こるかにある。
7.8.1. 定義
LogEvent = (
log.EntryAdded
)
7.8.2. 型
7.8.2.1. log.LogEntry
log.Level="debug"/"info"/"warn"/"error"log.Entry= ( log.GenericLogEntry / log.ConsoleLogEntry / log.JavascriptLogEntry )log.BaseLogEntry= (level: log.Level,source: script.Source,text: text / null,timestamp: js-uint, ?stackTrace: script.StackTrace, )log.GenericLogEntry= { log.BaseLogEntry,type: text, }log.ConsoleLogEntry= { log.BaseLogEntry,type:"console",method: text,args: [*script.RemoteValue], }log.JavascriptLogEntry= { log.BaseLogEntry,type:"javascript", }
各ログイベントはlog.Entryオブジェクトにより表される。これは、
追加されたログエントリの型を表すtypeプロパティ、重大度を表す
levelプロパティ、ログエントリの発生源を表すsource
プロパティ、ログメッセージ文字列そのものを持つtextプロパティ、および
ログエントリが生成された時刻に対応するtimestampプロパティを持つ。
log.Entryの特定の変種は、異なる発生源からのログを表すために使用され、
エントリ型に固有の追加フィールドを提供する。
7.8.3. イベント
7.8.3.1. log.entryAdded イベント
- イベント型
-
log.EntryAdded= (method:"log.entryAdded",params: log.Entry, )
リモートエンドイベントトリガーは次である:
次のコンソール 手順をmethod、args、および optionsを用いて定義する:
-
アクティブな BiDi セッション内の各sessionについて:
-
methodが"
error"または"assert"である場合、 levelを "error"とする。methodが"debug"または "trace"である場合、 levelを"debug"とする。methodが "warn"である場合、 levelを"warn"とする。そうでなければlevelを "info"とする。 -
timestampを、UTC での現在の 日付と時刻を表す時間値とする。
-
textを空文字列とする。
-
Type(args[0])が String であり、かつargs[0]が 書式指定子を含む場合、formatted argsをFormatter(args)とする。そうでなければ、 formatted argsをargsとする。
注記: Formatter 操作は Console 仕様で十分に定義されておらず、 書式設定は異なる実装間で一貫しない場合がある。
-
formatted args内の各argについて:
-
argがargs内の最初のエントリーでない場合、U+0020 SPACE をtextに付加する。
-
argがプリミティブ ECMAScript 値である場合、ToString(arg)を textに付加する。そうでなければ、実装定義の文字列を textに付加する。
-
-
realmを現在の Realm RecordのRealm IDとする。
-
serialized argsを新しいリストとする。
-
serialization optionsを、
script.SerializationOptions生成規則に一致し、フィールドが それぞれのデフォルト値に設定されたマップとする。 -
argsの各argについて:
-
serialized argを、 値としてarg、serialization options、所有権タイプとして
none、 シリアライズ内部マップとして新しいマップ、 realmおよび sessionを用いてリモート値としてシリアライズする結果とする。 -
serialized argをserialized argsに追加する。
-
-
sourceを、現在の Realm Recordを与えてソースを取得する結果とする。
-
stackを現在のスタックトレースとする。
-
entryを、
log.ConsoleLogEntry生成規則に一致し、levelフィールドがlevelに、textフィールドがtextに、timestampフィールドが timestampに、stackTraceフィールドがstackに、methodフィールドが methodに、sourceフィールドがsourceに、 かつargsフィールドがserialized argsに設定されたマップとする。 -
bodyを、
log.EntryAdded生成規則に一致し、paramsフィールドがentryに設定されたマップとする。 -
settingsを現在の設定オブジェクトとする
-
related navigablesを、settingsを与えて関連する ナビゲータブルを取得する結果とする。
-
session、"
log.entryAdded"および related navigablesを用いてイベントが 有効である場合、sessionおよび bodyを用いてイベントを発行する。そうでなければ、session、 related browsing contexts、およびbodyを用いてログイベントをバッファリングする。
-
引数script、 line number、column number、messageおよび handledを用いて、次のエラー報告手順を定義する:
-
handledが true の場合、返る。
-
settingsをscriptの設定オブジェクトとする。
-
timestampを、UTC での現在の日付 と時刻を表す時間値とする。
-
stackを、報告されているエラーに対応する 例外を用いた例外のスタックトレースとする。
-
sourceを、現在の Realm Recordを与えてソースを取得する結果とする。
-
entryを、
log.JavascriptLogEntry生成規則に一致し、levelが"error"に、textが messageに、sourceがsourceに、timestampが timestampに設定され、かつstackTraceフィールドがstackに設定されたマップとする。 -
bodyを、
log.EntryAdded生成規則に一致し、paramsフィールドがentryに設定されたマップとする。 -
related navigablesを、settingsを与えて関連する ナビゲータブルを取得する結果とする。
-
アクティブな BiDi セッション内の各sessionについて:
-
session、"
log.entryAdded"および related navigablesを用いてイベントが 有効である場合、sessionおよび bodyを用いてイベントを発行する。そうでなければ、session、 related browsing contexts、およびbodyを用いてログイベントをバッファリングする。
-
ロギングを 必要とするものはさらに多数ある。CDP には LogEntryAdded の型として xml、 javascript、network、storage、appcache、rendering、security、deprecation、 worker、violation、intervention、recommendation、other がある。これらは、異なるメソッドで表現される js 例外および Console API の型に加えて存在する。
session、navigablesおよびinclude globalを与えたときのリモートエンド購読手順は、購読優先度 10 であり、次のとおりである:
-
sessionのログイベント バッファ内の各navigable id → eventsについて:
-
maybe contextを、navigable idを与えてナビゲータブルを取得した結果とする。
-
maybe contextがエラーである場合、 navigable idをログイベントバッファから削除して続行する。
-
navigableをmaybe contextのデータとする
-
top level navigableをnavigableのトップレベルナビゲータブルとする。
-
include globalが true であり、かつtop level navigableが navigables内にない場合、 またはinclude globalが false であり、かつtop level navigableが navigables内にある場合:
-
events内の各(event, other navigables)について:
-
sessionおよびeventを用いてイベントを発行する。
-
other navigables内の各other context idについて:
-
ログイベントバッファが other context idを含む場合、eventを ログイベント バッファ[other context id]から削除する。
-
-
-
-
7.9. input モジュール
inputモジュールは、 シミュレートされたユーザー入力のための機能を含む。
7.9.1. 定義
InputCommand = (
input.PerformActions //
input.ReleaseActions //
input.SetFiles
)
InputResult = (
input.PerformActionsResult /
input.ReleaseActionsResult /
input.SetFilesResult
)
InputEvent = (
input.FileDialogOpened
)
7.9.2. 型
7.9.2.1. input.ElementOrigin
input.ElementOrigin型は、座標原点として使用されるElementを表す。
input.ElementOrigin= {type:"element",element: script.SharedReference }
input.ElementOrigin手順は次のとおりである:
-
objectが
input.ElementOrigin生成規則に一致するマップである場合、 true を返す。 -
false を返す。
input.ElementOriginから Element を取得する
手順は次のとおりである:
-
originおよびnavigableを与えたとき、次の手順を返す:
-
表明: originは
input.ElementOriginに一致する。 -
documentをnavigableのアクティブな文書とする。
-
referenceをorigin["
element"]とする -
environment settingsを、その 関連グローバルオブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmをenvironment settingsのRealm 実行コンテキストの Realm コンポーネントとする。
-
elementを、reference、realm、およびsessionを用いて試行して リモート参照をデシリアライズする 結果とする。
-
データelementとともに成功を返す。
-
7.9.3. コマンド
7.9.3.1. input.performActions コマンド
input.performActions コマンドは、 指定された user input actions の sequence を実行する。
注: このコマンドの動作の詳細な説明については、 actions section of [WEBDRIVER] を参照すること。
- コマンド型
-
input.PerformActions= (method:"input.performActions",params: input.PerformActionsParameters )input.PerformActionsParameters= {context: browsingContext.BrowsingContext,actions: [*input.SourceActions] }input.SourceActions= ( input.NoneSourceActions / input.KeySourceActions / input.PointerSourceActions / input.WheelSourceActions )input.NoneSourceActions= {type:"none",id: text,actions: [*input.NoneSourceAction] }input.NoneSourceAction= input.PauseActioninput.KeySourceActions= {type:"key",id: text,actions: [*input.KeySourceAction] }input.KeySourceAction= ( input.PauseAction / input.KeyDownAction / input.KeyUpAction )input.PointerSourceActions= {type:"pointer",id: text, ?parameters: input.PointerParameters,actions: [*input.PointerSourceAction] }input.PointerType="mouse"/"pen"/"touch"input.PointerParameters= { ?pointerType: input.PointerType .default "mouse" }input.PointerSourceAction= ( input.PauseAction / input.PointerDownAction / input.PointerUpAction / input.PointerMoveAction )input.WheelSourceActions= {type:"wheel",id: text,actions: [*input.WheelSourceAction] }input.WheelSourceAction= ( input.PauseAction / input.WheelScrollAction )input.PauseAction= {type:"pause", ?duration: js-uint }input.KeyDownAction= {type:"keyDown",value: text }input.KeyUpAction= {type:"keyUp",value: text }input.PointerUpAction= {type:"pointerUp",button: js-uint, }input.PointerDownAction= {type:"pointerDown",button: js-uint, input.PointerCommonProperties }input.PointerMoveAction= {type:"pointerMove",x: float,y: float, ?duration: js-uint, ?origin: input.Origin, input.PointerCommonProperties }input.WheelScrollAction= {type:"scroll",x: js-int,y: js-int,deltaX: js-int,deltaY: js-int, ?duration: js-uint, ?origin: input.Origin .default "viewport", }input.PointerCommonProperties= ( ?width: js-uint, ?height: js-uint, ?pressure: (0.0..1.0), ?tangentialPressure: (-1.0..1.0), ?twist: (0..359), ; 0 .. Math.PI / 2 ?altitudeAngle: (0.0..1.5707963267948966), ; 0 .. 2 * Math.PI ?azimuthAngle: (0.0..6.283185307179586), )input.Origin="viewport"/"pointer"/ input.ElementOrigin - 返却型
-
input.PerformActionsResult= EmptyResult
リモートエンド手順は、sessionおよびcommand parametersを用いて次のとおりである:
-
navigable idを、 command parametersの
contextフィールドの値とする。 -
navigableを、navigable idを用いて試行してナビゲータブルを 取得する 結果とする。
-
input stateを、sessionおよび navigableの トップレベルナビゲータブルを用いて入力状態を取得する結果とする。
-
actions optionsを、新しいアクションオプションとし、その要素オリジンである手順をinput.ElementOrigin であるに設定し、 要素オリジンを取得する手順を、sessionを与えたinput.ElementOrigin から Element を取得する 手順の結果に設定する。
-
actions by tickを、input state、command parameters、およびactions optionsを用いてアクションシーケンスを抽出することを試行した結果とする。
-
input state、 actions by tick、 navigable、およびactions optionsを用いて試行してアクションをディスパッチする。
-
データ null とともに成功を返す。
7.9.3.2. input.releaseActions コマンド
input.releaseActionsコマンドは、現在のセッションに関連付けられた入力 状態をリセットする。
- コマンド型
-
input.ReleaseActions= (method:"input.releaseActions",params: input.ReleaseActionsParameters )input.ReleaseActionsParameters= {context: browsingContext.BrowsingContext, } - 戻り値型
-
input.ReleaseActionsResult= EmptyResult
リモートエンド手順は、sessionおよびcommand parametersを与えたとき、次のとおりである:
-
navigable idを command parametersの
contextフィールドの値とする。 -
navigableを、navigable idを用いて試行してナビゲータブルを 取得する 結果とする。
-
top-level traversableをnavigableのトップレベルナビゲータブルとする。
-
input stateを、sessionおよび top-level traversableを用いて入力状態を取得する結果とする。
-
actions optionsを、新しいアクションオプションとし、要素オリジンである手順をinput.ElementOrigin であるに設定し、 要素オリジンを取得する手順を、sessionを与えたinput.ElementOrigin から Element を取得する 手順に設定する。
-
undo actionsをinput stateの入力キャンセルリストを逆順にしたものとする。
-
undo actions、0、navigable、および actions optionsを用いて試行してティックアクションをディスパッチする。
-
sessionおよび top-level traversableを用いて入力状態をリセットする。
-
データ null とともに成功を返す。
7.9.3.3. input.setFiles コマンド
input.setFilesコマンドは、与えられた
file型のinput要素のfilesプロパティを
ファイルパスの集合に設定する。
- コマンド型
-
input.SetFiles= (method:"input.setFiles",params: input.SetFilesParameters )input.SetFilesParameters= {context: browsingContext.BrowsingContext,element: script.SharedReference,files: [*text] } - 戻り値型
-
input.SetFilesResult= EmptyResult
次のリモートエンド手順は、sessionおよびcommand parametersを与えたときのものである:
-
navigable idをcommand parameters["
context"]フィールドの値とする。 -
navigableを、navigable idを用いて試行してナビゲータブルを 取得する結果とする。
-
documentをnavigableのアクティブな文書とする。
-
environment settingsを、その 関連グローバルオブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmをenvironment settingsのRealm 実行コンテキストの Realm コンポーネントとする。
-
elementを、command parameters["
element"]、realm、および sessionを用いて試行してリモート参照をデシリアライズする 結果とする。 -
elementが
HTMLInputElementを実装していない、 elementのtypeが ファイルアップロード状態にない、またはelementが 無効化されている場合、 エラーをエラー コード ファイル入力を設定できないとして返す。 -
filesのサイズが 1 より大きく、かつ elementの
multiple属性が設定されていない場合、エラーをエラーコード ファイル入力を設定できないとして返す。 -
filesをcommand parameters["
files"] フィールドの値とする。 -
selected filesをelementの選択されたファイルとする。
-
filesとselected filesの共通部分のサイズがselected filesのサイズと等しく、かつ filesの サイズと等しい場合、elementを与えて要素タスクをキューに入れ、ユーザー操作タスクソース上で elementに
cancelという名前のイベントを発火し、bubbles属性を true に初期化する。注記: ブラウザーでのキャンセルは通常、 ファイル選択の変更によって判断される。言い換えると、変更がない場合は "cancel" イベントが送信される。
-
そうでなければ、filesを ユーザーの選択としてelementのファイル選択を更新する。
-
何らかの理由で、リモートエンドがelementの選択されたファイルを filesで指定されたパスのファイルに設定できない場合、 エラーをエラーコード サポートされていない操作として返す。
注記: たとえば、リモートエンドは 選択されたファイルを、現在 ファイルシステム上に存在しないファイルに設定できない場合がある。
-
データ null とともに成功を返す。
7.9.4. イベント
7.9.4.1. input.fileDialogOpened イベント
- イベント型
-
input.FileDialogOpened= (method:"input.fileDialogOpened",params: input.FileDialogInfo )input.FileDialogInfo= {context: browsingContext.BrowsingContext, ?userContext: browser.UserContext, ?element: script.SharedReference,multiple: bool, }
WebDriver BiDi ファイルピッカーオプションは、multipleという名前の項目を持つ構造体であり、 これは真偽値である。
注記: 他のユーザープロンプトハンドラーとは異なり、デフォルトの 動作ではファイルダイアログを 開くことが許可される。
-
navigable idをnavigableのナビゲータブル IDとする。
-
user context idを、navigableの関連付けられたユーザー コンテキストのユーザー コンテキスト IDとする。
-
multipleを
falseとする。 -
elementが null でなく、かつelementの
multiple属性が設定されている場合、 multipleをtrueに設定する。 -
file picker optionsが null でなく、かつfile picker optionsのmultipleが true の場合、 multipleを
trueに設定する。 -
related navigablesを、navigableを含む集合 とする。
-
"
input.fileDialogOpened"およびrelated navigablesを与えたときのイベントが有効になっている セッションの集合内の各sessionについて:-
paramsを、
input.FileDialogInfo生成規則に一致し、contextフィールドがnavigable idに、userContextフィールドがuser context idに、かつmultipleフィールドがmultipleに設定されたマップとする。 -
elementが null でない場合:
-
shared idを、elementおよびsessionを用いてノードの 共有 ID を取得する結果とする。
-
params["
element"]をshared idに設定する。
-
-
bodyを、
input.fileDialogOpened生成規則に一致し、paramsフィールドがparamsに設定されたマップとする。 -
sessionおよびbodyを用いてイベントを 発行する。
-
-
dismissedを false とする。
-
アクティブな BiDi セッション内の各sessionについて:
-
user prompt handlerをsessionのユーザープロンプトハンドラーとする。
-
user prompt handlerが null でない場合:
-
user prompt handlerがマップであることを表明する。
-
user prompt handlerが"
file"を含む場合:-
user prompt handler["
file"]が "ignore"と等しくない場合、dismissedを true に設定する。
-
-
そうでなければ、user prompt handlerが"
default"を含み、かつ user prompt handler["default"]が "ignore"と等しくない場合、dismissedを true に設定する。
-
-
dismissedを返す。
7.10. webExtension モジュール
webExtension モジュールは、web extensions の管理およびそれらとの interaction のための機能を含む。
7.10.1. 定義
WebExtensionCommand = (
webExtension.Install //
webExtension.Uninstall
)
WebExtensionResult = (
webExtension.InstallResult /
webExtension.UninstallResult
)
7.10.2. 型
7.10.2.1. webExtension.Extension 型
webExtension.Extension = text
webExtension.Extension型は、リモートエンド内の Web
拡張機能 ID を表す。
7.10.3. コマンド
7.10.3.1. webExtension.install コマンド
webExtension.installコマンドは、リモートエンド内に Web 拡張機能をインストールする。
- コマンド型
-
webExtension.Install= (method:"webExtension.install",params: webExtension.InstallParameters )webExtension.InstallParameters= {extensionData: webExtension.ExtensionData, }webExtension.ExtensionData= ( webExtension.ExtensionArchivePath / webExtension.ExtensionBase64Encoded / webExtension.ExtensionPath )webExtension.ExtensionPath= {type:"path",path: text, }webExtension.ExtensionArchivePath= {type:"archivePath",path: text, }webExtension.ExtensionBase64Encoded= {type:"base64",value: text, } - 戻り値型
-
webExtension.InstallResult= {extension: webExtension.Extension }
-
zip 圧縮 アルゴリズムを使用してbytesをデコードする実装定義の手順を実行する。TODO: zip デコードのより適切な参照先を見つける。
-
前の手順が失敗した場合(たとえば、bytesが有効な zip 圧縮 データを表していなかったため)、エラーコードエラーとして無効な Web 拡張機能を返す。そうでなければ、entryを、展開されたファイルシステムエントリーを含むディレクトリエントリーとする。
-
entryを返す。
-
typeをextension data spec["
type"]とする。 -
typeを使用した Web 拡張機能のインストールがサポートされていない場合、エラーをエラー コード サポートされていない操作として返す。
-
以下の条件とそれに対応する手順のリストにおいて、 対応する条件が true である最初の手順の組を実行する:
- typeが文字列"
path"である -
-
pathをextension data spec["
path"]とする。 -
locatorを、パスがpathで、ルートがファイル システムのルートに対応するディレクトリロケーターとする。
-
entryを、locatorを与えてエントリーを特定する結果とする。
-
- typeが文字列"
archivePath"である -
-
archive pathをextension data spec["
path"]とする。 -
locatorを、パスがarchive pathで、ルートがファイル システムのルートに対応するファイルロケーターとする。
-
archive entryを、locatorを与えてエントリーを特定する結果とする。
-
archive entryが null の場合、null を返す。
-
bytesをarchive entryのバイナリデータとする。
-
entryを、bytesを与えて試行してzip アーカイブを展開する結果とする。
-
- typeが文字列"
base64"である -
-
bytesをextension data spec["
value"]に対する寛容な base64 デコード とする。 -
bytesが失敗である場合、null を返す。
-
entryを、bytesを与えて試行してzip アーカイブを展開する結果とする。
-
- typeが文字列"
-
entryを返す。
-
Web 拡張機能のインストールがサポートされていない場合、エラー コードエラーとして サポートされていない操作を返す。
-
extension data specをcommand parameters["
extensionData"]とする。 -
extension directory entryを、extension data specを用いて試行してWeb 拡張機能データ指定を展開する結果とする。
-
extension directory entryが null の場合、エラーをエラーコード 無効な Web 拡張機能として返す。
-
extension directory entryから Web 拡張機能をインストールする実装定義の手順を実行する。これが失敗した場合、エラーをエラーコード 無効な Web 拡張機能として返す。そうでなければ、extension idを、新しく インストールされた Web 拡張機能の一意な識別子とする。
-
resultを、
webExtension.InstallResult生成規則に一致し、extensionフィールドがextension idに設定されたマップとする。 -
データresultとともに成功を返す。
注記: ブラウザーは既定で Web 拡張機能を一時的にのみ インストールする場合があるため、 次回終了時に自動的にアンインストールされることがある。
7.10.3.2. webExtension.uninstall コマンド
webExtension.uninstallコマンドは、 リモートエンドの Web 拡張機能をアンインストールする。
- コマンド型
-
webExtension.Uninstall= (method:"webExtension.uninstall",params: webExtension.UninstallParameters )webExtension.UninstallParameters= {extension: webExtension.Extension, } - 戻り値型
-
webExtension.UninstallResult= EmptyResult
8. 他の仕様へのパッチ
この仕様は、必要な integration points を提供するため、外部仕様へのいくつかの変更を必要とする。 これらの patches は standards process の一部として他の仕様へ commit されるものと想定される。
8.1. HTML
report an error algorithm は、末尾に追加の step を加えて変更される:
-
外部仕様で定義された任意の error reporting steps を、script, line, col, message, および error が handled であれば true、そうでなければ false とともに呼び出す。
8.2. Console
他の仕様は console steps を定義できる。
-
Printer operation が arguments name, printerArgs および options(argument が提供されない場合は undefined) とともに呼び出される時点で、外部仕様で定義された任意の console steps を arguments name, printerArgs, および options とともに呼び出す。
8.3. CSS
8.3.1. device pixel ratio の決定
determine the device pixel ratio algorithm の先頭に、 次の steps を挿入する:
-
デバイスピクセル比オーバーライドがwindowのナビゲータブルを含む場合、デバイスピクセル 比オーバーライド[windowのナビゲータブル]を返す。
8.3.2. メディアクエリの評価
https://github.com/w3c/csswg-drafts/pull/13549 がマージされた後に削除する。
[メディア 特性を評価するアルゴリズムは、WebDriver BiDi オーバーライドをサポートするように変更される。「指定されたメディア特性を評価した結果を結果とする」という手順を次に置き換える:
-
media feature nameをmedia featureのmf-nameとする。
-
emulated valueを、 documentおよびmedia feature nameに対するWebDriver BiDi メディア特性値を取得した結果とする。
-
emulated valueが null でない場合、emulated valueを返す。
-
そうでなければ、指定されたmedia featureを評価した結果を返す。
8.3.3. viewport meta 要素
https://github.com/w3c/csswg-drafts/pull/13548 がマージされた後に削除する。
[CSS-VIEWPORT-1]仕様の「Viewport meta element」節は、 WebDriver BiDi viewport meta 状態を検証するように変更される。
`viewport` meta 要素の ノード文書を与えたWebDriver BiDi viewport meta 状態が true の場合、ユーザーエージェントは`viewport` meta 要素を使用しなければならない。
そうでなければ、ユーザーエージェントは`viewport` meta 要素を使用してもよい。
9. 付録
この節は非規範的である。
9.1. 外部仕様
注: この list は網羅的ではなく、最新でない可能性がある。
次の外部仕様は、追加の WebDriver BiDi modules を定義する: