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 が 呼び出された直後:
-
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に対するアニメーションフレームコールバックを実行する アルゴリズムの次の呼び出しの直後に:
これは、 より明示的な方法でレンダリング更新アルゴリズムに統合されるべきである。
-
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.SetNetworkConditions //
emulation.SetScreenOrientationOverride //
emulation.SetScreenSettingsOverride //
emulation.SetScriptingEnabled //
emulation.SetScrollbarTypeOverride //
emulation.SetTimezoneOverride //
emulation.SetTouchOverride //
emulation.SetUserAgentOverride
)
EmulationResult = (
emulation.SetForcedColorsModeThemeOverrideResult /
emulation.SetGeolocationOverrideResult /
emulation.SetLocaleOverrideResult /
emulation.SetScreenOrientationOverrideResult /
emulation.SetScriptingEnabledResult /
emulation.SetScrollbarTypeOverrideResult /
emulation.SetTimezoneOverrideResult /
emulation.SetTouchOverrideResult /
emulation.SetUserAgentOverrideResult
)
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 コマンドは、指定された top-level traversables または user contexts 上の forced colors mode のテーマ特性を変更する。
- コマンド型
-
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 仕様における対応する enum mapping については、ForcedColorsModeAutomationTheme
を参照すること。
remote end は forced colors mode theme override configuration を持つ。これは associated type string を持つ WebDriver configuration である。
-
theme を、navigable についての forced colors mode theme override configuration の get WebDriver configuration value の結果とする。
-
Assert: theme は "
light"、"dark" または unset である。 -
theme が unset である場合、theme を "
none" に設定する。 -
navigable および theme で Set emulated forced colors theme data する。
command parametersを伴うリモートエンド手順は次のとおりである:
-
themeをcommand parameters["
theme"]とする。 -
themeが null である場合、themeを未設定に設定する。
-
実装がthemeの設定をサポートしない場合、エラーをエラー コード unsupported operationで返す。
-
affected navigablesを、command parametersについて forced colors mode theme override configuration themeを試行してWebDriver 構成を格納する結果とする。
-
affected navigablesの各navigableについて:
-
navigableについてエミュレートされた forced colors テーマを更新する。
-
-
成功をデータ null とともに返す。
7.4.2.2. emulation.setGeolocationOverride コマンド
emulation.setGeolocationOverride コマンドは、 指定された top-level traversables または user contexts 上の geolocation 特性を変更する。
- コマンド型
-
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という名前の項目。これは float である; -
longitudeという名前の項目。これは float である; -
accuracyという名前の項目。これは float である; -
altitudeという名前の項目。これは float または null である; -
altitudeAccuracyという名前の項目。これは float または null である; -
headingという名前の項目。これは float または null である; -
speedという名前の項目。これは float または 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" を含まない場合、 エラーを エラーコード invalid argument で返す。 -
command parameters が "
error" を含む場合:-
command parameters["
error"]["type"] が "positionUnavailable" と等しいことを表明する。 -
emulated position data を、マップ とし、これは GeolocationPositionError 生成規則に一致し、
codeフィールドは POSITION_UNAVAILABLE に設定され、messageフィールドは空文字列に設定されるものとする。注:
messageは、 geolocation 仕様に従って実装により無視される。
-
-
それ以外の場合、emulated position data を command parameters["
coordinates"] とする。 -
emulated position data が null である場合、emulated position data を unset に設定する。
-
affected navigables を、command parameters に対して geolocation override configuration emulated position data のWebDriver 設定を保存することを試行する結果とする。
-
affected navigables の各 navigable について:
-
navigable について geolocation override を更新する。
-
-
データ null で 成功を返す。
7.4.2.3. emulation.setLocaleOverride コマンド
emulation.setLocaleOverride コマンドは、 指定された top-level traversables または user contexts 上の locale を変更する。
- コマンド型
-
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 が与えられた 関連する navigable を取得する結果とする。
-
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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
command parameters が "
userContexts" を含まず、 かつ command parameters が "contexts" を含まない場合、 エラーを エラー コード invalid argument で返す。 -
emulated locale を command parameters["
locale"] とする。 -
emulated locale が null でなく、かつ IsStructurallyValidLanguageTag(emulated locale) が false を返す場合、エラーを エラー コード invalid argument で返す。
-
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.setNetworkConditions コマンド
emulation.setNetworkConditions コマンドは、 指定された browsing context または user context に対して特定の network conditions をエミュレートする。
- コマンド型
-
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
apply network conditions するには:
-
各 WebSocket object webSocket について:
-
realm を webSocket の relevant Realm とする。
-
environment settings を、その realm execution context の Realm component が realm である environment settings object とする。
-
environment settings で WebDriver BiDi network is offline した結果が true である場合:
-
webSocket について Fail the WebSocket connection する。
-
-
-
各 WebTransport object webTransport について:
-
realm を webSocket の relevant Realm とする。
-
environment settings を、その realm execution context の Realm component が realm である environment settings object とする。
-
environment settings で WebDriver BiDi network is offline した結果が true である場合:
-
webTransport について Cleanup WebTransport する。
-
-
command parameters および session によるリモートエンド手順は次の通りである:
-
command parameters が "
userContexts" を含み、 かつ command parameters が "context" を含む場合、 エラーを エラー コード invalid argument で返す。 -
emulated network conditions を null とする。
-
command parameters["
networkConditions"] が null でなく、かつ command parameters["networkConditions"]["type"] が "offline" に等しい場合、emulated network conditions を、 エミュレートされたネットワーク条件構造体である新しいものに設定し、 offline を true に設定する。 -
command parameters の
contextsフィールドが存在する場合:-
navigables を、command parameters["
contexts"] を用いて ID により有効なトップレベル トラバーサブルを取得することを試行する結果とする。 -
navigables の各 navigable について:
-
emulated network conditions が null である場合、 session の エミュレートされたネットワーク 条件の navigable network conditions から navigable を削除する
-
それ以外の場合、session の エミュレートされたネットワーク 条件の navigable network conditions[navigable] を emulated network conditions に設定する。
-
-
-
command parameters の
userContextsフィールドが存在する場合:-
user contexts を、command parameters["
userContexts"] を用いて 有効なユーザーコンテキストを取得することを 試行する結果とする。 -
user contexts の各 user context について:
-
emulated network conditions が null である場合、 session の エミュレートされたネットワーク 条件の user context network conditions から user context を削除する。
-
それ以外の場合、session の エミュレートされたネットワーク 条件の user context network conditions[user context] を emulated network conditions に設定する。
-
-
-
command parameters が "
userContexts" を含まず、 かつ command parameters が "context" を含まない場合、 session の エミュレートされたネットワーク条件の デフォルトネットワーク 条件を emulated network conditions に設定する。 -
データ null で 成功を返す。
7.4.2.5. emulation.setScreenSettingsOverride コマンド
emulation.setScreenSettingsOverride コマンドは、 指定された top-level traversables または user contexts の web-exposed screen area および web-exposed available screen area をエミュレートする。
- コマンド型
-
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 navigable が与えられた WebDriver BiDi のエミュレートされた利用可能な画面 領域手順:
-
top-level traversable を navigable の トップレベルトラバーサブルとする。
-
user context を top-level traversable の 関連付けられたユーザー コンテキストとする。
-
画面設定オーバーライドが top-level traversable を含む場合、 画面設定オーバーライド[top-level traversable] を返す。
-
画面設定オーバーライドが user context を含む場合、 画面設定オーバーライド[user context] を返す。
-
null を返す
navigable 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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
command parameters が "
userContexts" を含まず、 かつ command parameters が "contexts" を含まない場合、 エラーを エラー コード invalid argument で返す。 -
emulated screen area を command parameters["
screenArea"] とする。 -
emulated screen area が null でない場合:
-
navigables を集合とする。
-
command parameters の
contextsフィールドが存在する場合:-
navigables を、 command parameters["
contexts"] を用いて ID により有効なトップレベル トラバーサブルを取得することを試行する結果とする。 -
target を navigable 画面 設定とする。
-
navigables の各 navigable について:
-
データ null で 成功を返す。
-
-
それ以外の場合:
-
command parameters の
userContextsフィールドが存在することを表明する。 -
user contexts を、command parameters["
userContexts"] を用いて 有効なユーザーコンテキストを取得することを 試行する結果とする。 -
target を ユーザーコンテキスト 画面設定とする。
-
user contexts の各 user context について:
-
データ null で 成功を返す。
-
7.4.2.6. 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 によって 画面の向き パラメーターを調整できない場合、エラーを エラー コード unsupported operation で返す。
-
command parameters が "
userContexts" を含み、 かつ command parameters が "contexts" を含む場合、 エラーを エラー コード invalid argument で返す。 -
command parameters が "
userContexts" を含まず、 かつ command parameters が "contexts" を含まない場合、 エラーを エラー コード invalid argument で返す。 -
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.7. 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で関連する navigable を取得する結果とする。
-
related navigablesの各navigableについて:
-
top-level navigableを、navigableのトップレベル辿可能とする。
-
user contextを、top-level navigableの関連付けられた ユーザーコンテキストとする。
-
アクティブ BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたユーザーエージェントのnavigable ユーザー エージェントが top-level navigableを含む場合、sessionのエミュレートされたユーザーエージェントの navigable ユーザー エージェント[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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
emulated user agent を command parameters["
userAgent"] とする。 -
command parameters が "
contexts" を含む場合:-
navigables を、 command parameters["
contexts"] を用いて ID により有効なトップレベル トラバーサブルを取得することを試行する結果とする。 -
navigables の各 navigable について:
-
emulated user agent が null である場合、 navigable を session の エミュレートされたユーザーエージェントのnavigable user agentから削除する。
-
それ以外の場合、session の エミュレートされたユーザーエージェントの navigable user agent[navigable] を emulated user agent に設定する。
-
-
データ null で 成功を返す。
-
-
command parameters が "
userContexts" を含む場合:-
user contexts を、 command parameters["
userContexts"] を用いて 有効なユーザーコンテキストを取得することを 試行する結果とする。 -
user contexts の各 user context について:
-
emulated user agent が null である場合、 user context を session の エミュレートされたユーザーエージェントのuser context user agentから削除する。
-
それ以外の場合、session の エミュレートされたユーザーエージェントの user context user agent[user context] を emulated user agent に設定する。
-
-
データ null で 成功を返す。
-
-
session の エミュレートされたユーザー エージェントの default user agent を emulated user agent に設定する。
-
データ null で 成功を返す。
7.4.2.8. emulation.setScriptingEnabled コマンド
emulation.setScriptingEnabled コマンドは、 ウェブページ上で 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のノード navigableとする。 -
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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
command parameters が "
userContexts" を含まず、 かつ command parameters が "contexts" を含まない場合、 エラーを エラー コード invalid argument で返す。 -
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.9. 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
リモートエンドは、スクロールバー型オーバーライド構成を持つ。これは string を関連付けられた型として持つWebDriver 構成である。
-
scrollbar type overrideを、navigableについて スクロールバー型オーバーライド構成のWebDriver 構成値を取得する結果とする。
-
表明:scrollbar type overrideは "
classic"、 "overlay"、または 未設定である。 -
scrollbar type overrideが "
classic" である場合、navigableのアクティブ文書にclassic scrollbarsを使用させるための実装定義の手順を実行して戻る。 -
scrollbar type overrideが "
overlay" である場合、navigableのアクティブ文書にoverlay scrollbarsを使用させるための実装定義の 手順を実行して戻る。 -
表明:scrollbar type overrideは未設定である。
command parametersが与えられたときのリモートエンド手順は次のとおりである:
-
scrollbar type overrideをcommand parameters["
scrollbarType"]とする。 -
scrollbar type overrideが null である場合、scrollbar type overrideを 未設定に設定する。
-
実装がscrollbar type overrideの設定をサポートしない場合、エラーを エラーコード unsupported operationで返す。
-
affected navigablesを、command parametersについて スクロールバー型オーバーライド 構成 scrollbar type overrideを試行してWebDriver 構成を格納する結果とする。
-
affected navigablesの各navigableについて:
-
navigableについてスクロールバー型オーバーライドを更新する。
-
-
成功をデータ null とともに返す。
7.4.2.10. 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 であるものとする。
-
related navigables を、 environment settings が与えられた 関連する navigable を取得する結果とする。
-
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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
command parameters が "
userContexts" を含まず、 かつ command parameters が "contexts" を含まない場合、 エラーを エラー コード invalid argument で返す。 -
emulated timezone を command parameters["
timezone"] とする。 -
emulated timezone が null でなく、かつ IsTimeZoneOffsetString(emulated timezone) が false を返し、かつ AvailableNamedTimeZoneIdentifiers が emulated timezone を含まない場合、エラーを エラーコード invalid argument で返す。
-
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.11. emulation.setTouchOverride コマンド
emulation.setTouchOverride コマンドは、 ウェブページ上でタッチ入力が有効化されることをエミュレートする。
- コマンド型
-
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で関連する navigable を取得する結果とする。
-
related navigablesの各navigableについて:
-
top-level navigableを、navigableのトップレベル辿可能とする。
-
user contextを、top-level navigableの関連付けられた ユーザーコンテキストとする。
-
アクティブ BiDi セッション内の各sessionについて:
-
sessionのエミュレートされた maxTouchPointsの navigableが top-level navigableを含む場合、 sessionのエミュレートされた maxTouchPointsの navigable[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 を公開する仕組みがあり、 これは、ユーザーエージェントがタッチ対応の「モバイル」デバイスであることを示すシグナルとして、一部の既存の ウェブコンテンツによって現在も使用されることがある。API はレガシーであるものの、ユーザーエージェントは レガシータッチイベント API を公開するにおいて、 エミュレートされた maxTouchPoints状態を尊重するための実装定義の手順を実行することがある。
-
command parameters が 含み "
userContexts" かつ command parameters が 含む "contexts" 場合、エラーを エラー コード invalid argument で返す。 -
maxTouchPointsをcommand parameters["
maxTouchPoints"]とする。 -
command parametersの
contextsフィールドが存在する場合:-
navigablesを、 command parameters["
contexts"]で試行して ID により有効なトップレベル 辿可能を取得する 結果とする。 -
navigablesの各navigableについて:
-
maxTouchPointsが null である場合、 navigableを sessionの エミュレートされた maxTouchPointsの navigableから除去する。
-
そうでなければ、sessionのエミュレートされた maxTouchPointsの navigable[navigable]を maxTouchPointsに設定する。
-
-
成功をデータ null とともに返す。
-
-
command parametersの
userContextsフィールドが存在する場合:-
user contextsを、 command parameters["
userContexts"]で試行して 有効なユーザーコンテキストを取得する結果とする。 -
user contextsの各user contextについて:
-
maxTouchPointsが null である場合、 user contextを sessionの エミュレートされた maxTouchPointsの ユーザーコンテキストから除去する。
-
そうでなければ、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 )
リモートエンドは、before request sent マップを持つ。これは初期状態では
空のマップである。これは、network.beforeRequestSentイベントがすでに送信された
ネットワークイベントを追跡するために使用される。
リモートエンドは、文字列である既定のキャッシュ挙動を持つ。これは
初期状態では "default" である。
リモートエンドは、navigable キャッシュ挙動マップを持つ。これは トップレベル辿可能とキャッシュ挙動を表す文字列の間の weak map である。これは初期状態では空である。
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 セッションは、ネットワーク collectorを持つ。
これは
network.Collector
と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 セッションは、インターセプトマップを持つ。これは
intercept 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を含まない 場合、エラーをエラー コード no such requestで返す。
-
(request, phase, response)を、blocked requests[request id]とする。
-
phaseが "
beforeRequestSent" であり、かつcommandが "continueResponse" である場合、エラーをエラーコード "invalid argument"で返す。TODO: 別のエラーを検討する
-
responseが null である場合:
-
表明:phaseは "
beforeRequestSent" である。 -
responseを新しいresponseに設定する。
-
-
command parametersが "
statusCode"を含む場合:-
responsesのstatusをcommand parameters["
statusCode"]に設定する。
-
-
command parametersが "
reasonPhrase"を含む場合:-
responsesのstatus messageを、 command parameters["
reasonPhrase"]でUTF-8 encodeしたものに設定する。
-
-
command parametersが "
headers"を含む場合:-
headersを、 command parameters["
headers"]で試行して ヘッダーリストを作成する結果とする。 -
responseのヘッダーリストをheadersに設定する。
-
-
command parametersが "
cookies"を含む場合:-
command parametersが "
headers" を含む場合、 headersをresponseのヘッダーリストとする。そうでなければ:
-
headersを空のヘッダーリストとする。
-
responseのheaders list内の各headerについて:
-
nameをheaderの name とする。
-
nameをbyte-lowercaseしたものが `
set-cookie`でない場合:-
headerをheadersに付加する
-
-
-
-
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の authentication credentials を (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が failure である場合、valueが bytesをforgiving-base64 encodeしたものに設定された、
network.Base64Value生成規則に一致するマップを返す。 -
valueがtextに設定された、
network.StringValue生成規則に一致する マップを返す。
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の name がfield-name token 生成規則に一致しない場合、エラーを エラーコード "
invalid argument"で返す。 -
deserialized headerの value がヘッダー 値 生成規則に一致しない場合、エラーを エラーコード "
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" を含む場合: -
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 できる。
-
forbidden charactersを、符号位置 «U+0028 ((), U+0029 ()), U+002A (*), U+007B ({), U+007D (})» の集合とする
-
resultを空文字列とする。
-
is escaped characterを false とする。
-
pattern内の各codepointについて:
-
is escaped characterが false である場合:
-
forbidden charactersがcodepointを含む場合、エラーを エラーコード invalid argumentで返す。
-
codepointが U+005C (\) である場合:
-
is escaped characterを true に設定する。
-
続行する。
-
-
-
codepointを result に付加する。
-
is escaped characterを false に設定する。
-
-
成功をデータresultとともに返す。
-
has protocol を true とする。
-
has hostname を true とする。
-
has port を true とする。
-
has pathname を true とする。
-
has search を true とする。
-
pattern が
network.UrlPatternPattern生成規則に一致する場合:-
pattern url を空文字列とする。
-
pattern が "
protocol" を含む場合:-
pattern["
protocol"] が空文字列である場合、エラーを エラーコード invalid argument で返す。 -
protocol を、pattern["
protocol"] を用いて URL Pattern をエスケープ解除することを試行する結果とする。 -
protocol 内の各 codepoint について:
-
protocol を pattern url に付加する。
-
-
それ以外の場合:
-
has protocol を false に設定する。
-
"
http" を pattern url に付加する。
-
-
scheme を、pattern url の ASCII 小文字化とする。
-
"
:" を pattern url に付加する。 -
scheme が特別である場合、 "
//" を pattern url に付加する。 -
pattern が "
hostname" を含む場合:-
pattern["
hostname"] が空文字列である場合、エラーを エラーコード invalid argument で返す。 -
scheme が "
file" である場合、エラーを エラーコード invalid argument で返す。 -
hostname を、pattern["
hostname"] を用いて URL Pattern をエスケープ解除することを試行する結果とする。 -
inside brackets を false とする。
-
hostname 内の各 codepoint について:
-
«U+002F (/), U+003F (?), U+0023 (#)» が codepoint を含む場合:
-
エラーを エラーコード invalid argument で返す。
-
-
inside brackets が false であり、かつ codepoint が U+003A (:) である場合:
-
エラーを エラーコード invalid argument で返す。
-
-
codepoint が U+005B ([) である場合、inside brackets を true に設定する。
-
codepoint が U+005D (]) である場合、inside brackets を false に設定する。
-
-
hostname を pattern url に付加する。
-
-
それ以外の場合:
-
scheme が "
file" でない場合、 "placeholder" を pattern url に付加する。 -
has hostname を false に設定する。
-
-
pattern が "
port" を含む場合:-
pattern["
port"] が空文字列である場合、エラーを エラーコード invalid argument で返す。 -
port を、pattern["
port"] を用いて URL Pattern をエスケープ解除することを試行する結果とする。 -
"
:" を pattern url に付加する。 -
port 内の各 codepoint について:
-
codepoint が ASCII 数字でない場合:
-
エラーを エラーコード invalid argument で返す。
-
-
-
port を pattern url に付加する。
-
-
それ以外の場合:
-
has port を false に設定する。
-
-
pattern が "
pathname" を含む場合:-
pathname を、 pattern["
pathname"] を用いてURL Pattern をエスケープ解除することを試行する結果とする。 -
pathname が U+002F (/) で始まらない場合、 "
/" を pattern url に付加する。 -
pathname 内の各 codepoint について:
-
«U+003F (?), U+0023 (#)» が codepoint を含む場合:
-
エラーを エラーコード invalid argument で返す。
-
-
-
pathname を pattern url に付加する。
-
-
それ以外の場合:
-
has pathname を false に設定する。
-
-
pattern が "
search" を含む場合:-
search を、 pattern["
search"] を用いてURL pattern をエスケープ解除することを試行する結果とする。 -
search が U+003F (?) で始まらない場合、 "
?" を pattern url に付加する。 -
search 内の各 codepoint について:
-
codepoint が U+0023 (#) である場合:
-
エラーを エラーコード invalid argument で返す。
-
-
-
search を pattern url に付加する。
-
-
それ以外の場合:
-
has search を false に設定する。
-
-
-
それ以外で、pattern が
network.UrlPatternString生成規則に一致する場合:-
pattern url を、 pattern["
pattern"] を用いて URL pattern をエスケープ解除することを試行する結果とする。
-
-
url を、pattern url を構文解析する結果とする。
-
url が失敗である場合、エラーを エラーコード invalid argument で返す。
-
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フィールドが存在する場合、 input context idsを command parameters[contexts]で集合を作成するに設定する。 -
data typesを、 command parameters["
dataTypes"]で集合を作成するとする。 -
max encoded item sizeをcommand parameters ["
maxEncodedDataSize"]とする。注記:
maxEncodedDataSizeパラメーターは 最大エンコード済み項目サイズを表し、 指定された collector によって収集される各リクエストのサイズを制限するものであり、 collector 全体の収集サイズを制限するものではない。注記: 実装によってサポートするエンコードが 異なる場合があり、これは エンコード済みサイズがブラウザー間で異なりうることを意味する。したがって、同じデータ collector 構成であっても、一部のネットワークデータが最大エンコード済み項目サイズに収まるのは、 一部の実装のみである場合がある。
-
collector typeをcommand parameters ["
collectorType"]とする。 -
input user context idsを空の集合とする。
-
command parametersの
userContextsフィールドが存在する場合、 input user context idsを command parameters[userContexts]で集合を作成するに設定する。 -
input user context idsが空でなく、かつinput context idsが 空でない場合、エラーをエラー コード invalid argumentで返す。
-
max encoded item sizeが 0 であるか、max encoded item sizeが 最大総収集サイズより大きい場合、エラーをエラー コード invalid argumentで返す。
-
input context idsが空でない場合:
-
navigablesを、input context idsで試行して ID により有効な navigable を取得する 結果とする。
-
navigables内の各navigableについて:
-
navigableがトップレベル辿可能でない場合、エラーを エラーコード invalid argumentで返す。
-
-
-
そうでなく、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フィールドがcollector idに、 collector 型フィールドがcollector typeに、 contextsフィールドがinput context idsに、 ユーザーコンテキストフィールドがinput user context idsに設定されたcollectorとする。
-
sessionのネットワーク collector[collector id]を collectorに設定する。
-
collectorフィールドがcollector idに設定されたnetwork.AddDataCollectorResult生成規則に一致する新しいマップを返す。
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フィールドが存在する場合:-
navigablesを空の集合に設定する。
-
command parameters["
contexts"]の各navigable idについて-
navigableを、navigable idで試行してnavigable を取得する 結果とする。
-
navigableがトップレベル辿可能でない場合、エラーを エラーコード invalid argumentで返す。
-
navigableをnavigablesに付加する。
-
-
navigablesが空の集合である場合、エラーを エラーコード invalid argumentで返す。
-
-
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を持つ構造体に設定する。 -
interceptフィールドがinterceptに設定されたnetwork.AddInterceptResult生成規則に一致する新しいマップを返す。
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 を含まない 場合、エラーを エラー コード no such request で返す。
-
(request, phase, response) を blocked requests[request id] とする。
-
phase が "
beforeRequestSent" でない場合、エラーを エラーコード invalid argument で返す。 -
command parameters が "
url" を含む場合: -
command parameters が "
method" を含む場合:-
method を command parameters["
method"] とする。 -
method が method token 生成規則に一致しない場合、エラーを エラーコード "
invalid argument" で返す。 -
request の method を method とする。
-
-
command parameters が "
headers" を含む場合:-
headers を空の ヘッダーリストとする。
-
command parameters["
headers"] 内の各 header について:-
deserialized header を、header を用いて ヘッダーを逆直列化する結果とする。
-
deserialized header の名前が field-name token 生成規則に一致しない場合、エラーを エラーコード "
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 を 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で 試行してresponse を更新する結果とする。 -
"
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を含まない 場合、 エラーをエラー コード no such requestで返す。
-
(request, phase, response)を、blocked requests[request id]とする。
-
phaseが "
authRequired" でない場合、エラーを エラーコード invalid argumentで返す。 -
command parameters "
action" が "cancel" である場合、 responseの authentication credentials を "cancelled" に設定する。 -
command parameters "
action" が "provideCredentials" である場合:-
credentialsをcommand parameters["
credentials"]とする。 -
表明:credentials["
type"]は "password" である。 -
responseの authentication credentials を (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のネットワーク collectorとする。
-
collectorsが collector idを含まない場合、 エラーをエラー コード no such network collectorで返す。
-
collected dataを、request idおよび data typeで収集済みデータを取得する結果とする。
-
collected dataが null である場合、エラーをエラーコード no such network dataで返す。
-
collected dataおよびcollector idでデータから collector を除去する。
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を含まない 場合、 エラーをエラー コード no such requestで返す。
-
(request, phase, response)を、 blocked requests[request id]とする。
-
phaseが "
authRequired" である場合、エラーを エラーコード invalid argumentで返す。 -
responseを新しいネットワークエラーとする。
正確なエラー種別の設定を許可する [Issue #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のネットワーク collectorとする。
-
collectorsがcollector idを含まない場合、 エラーをエラーコード no such network collectorで返す。
-
collector idをcommand parameters["
collector"]に設定する。
-
-
disownをcommand parameters["
disown"]とする。 -
disownが true であり、かつcollector idが null である場合、エラーを エラーコード invalid argumentで返す。
-
collected dataを、request idおよび data typeが与えられたとして収集済みデータを取得する結果とする。
-
collected dataが null である場合:
-
collected dataのpendingが true である場合:
-
"network data collected" および (request id, data type) で待機する。
-
-
collector idが null でなく、かつcollected dataのcollectorsが collector idを含まない場合:
-
bytesを、collected dataのbytesとする。
-
bytesが null である場合、
-
bodyを、
bytesフィールドがbytesに設定された、network.GetDataResult生成規則に一致するマップとする。 -
disownが true である場合、collected dataおよびcollector idでデータから collector を除去する。
-
成功をデータ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で試行してresponse を更新する結果とする。 -
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のネットワーク collectorとする。
-
collectorsが collector idを含まない場合、 エラーをエラー コード no such network collectorで返す。
-
sessionのネットワーク collectorからcollector idを除去する。
-
収集されたネットワークデータ内の各collected dataについて、collected dataおよびcollector idでデータから collector を除去する。
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を含まない場合、 エラーをエラー コード no such 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のトップレベル辿可能とする。
-
navigable キャッシュ挙動マップが含む top-level navigable場合、 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で試行して navigable を 取得する 結果とする。
-
contextがトップレベルブラウジングコンテキストでない場合、エラーを エラーコード invalid argumentで返す。
-
contextをnavigablesに付加する。
-
-
navigables内の各navigableについて:
-
navigable キャッシュ挙動マップが navigableを含み、かつ navigable キャッシュ挙動 マップ[navigable]がbehaviorに等しい場合、 続行する。
-
behavior の値で分岐する:
- "
bypass" - navigableがトップレベルブラウジングコンテキストである任意のブラウジング コンテキストから発生するネットワークリクエストについて、実装固有の リソースキャッシュを無効化するための実装定義の手順を実行する。
- "
default" - navigableが トップレベルブラウジングコンテキストである任意のブラウジングコンテキストから発生するネットワークリクエストについて、 現在のリモートエンド構成で通常有効化されている 実装固有のリソースキャッシュを有効化するための実装定義の手順を実行する。
- "
-
behaviorが既定のキャッシュ挙動に等しい場合:
-
navigable キャッシュ挙動マップ がnavigableを含む場合、 navigable キャッシュ挙動 マップ[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 である。
注記: これは、複数の navigable に関連付けられた worker では機能しないことを意味する。その場合、どの順序でヘッダーをオーバーライドするかは不明である。
-
user context headersを、sessionの追加ヘッダーの ユーザーコンテキストヘッダーとする。
-
related navigables内の各navigableについて:
-
user contextを、navigableの関連付けられた ユーザーコンテキストとする。
-
user context headersがuser contextを含む場合、 requestおよび user context headers[user context]でヘッダーを更新する
-
-
navigable headersを、sessionの追加ヘッダーの navigable ヘッダーとする。
-
related navigables内の各navigableについて:
-
command parameters が "
userContexts" を含み、 かつ command parameters が "contexts" を含む場合、 エラーを エラー コード invalid argument で返す。 -
headers を、command parameters["
headers"] を用いて ヘッダーリストを作成することを試行する結果とする。 -
command parameters が "
userContexts" を含む場合:-
user contexts を空のリストとする。
-
command parameters["
userContexts"] 内の各 user context id について:-
user context を、user context id を用いて ユーザーコンテキストを取得する結果とする。
-
user context が null である場合、エラーを エラーコード no such user context で返す。
-
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 の 追加ヘッダーの navigable ヘッダーとする
-
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のエミュレートされたネットワーク 条件の navigable ネットワーク条件が top-level traversableを含む場合、 sessionの エミュレートされたネットワーク 条件の navigable ネットワーク条件[top-level traversable]を返す。
-
-
アクティブ BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件が user contextを含む場合、sessionの エミュレートされたネットワーク 条件の ユーザー コンテキストネットワーク条件[user context]を返す。
-
-
アクティブ BiDi セッション内の各sessionについて:
-
sessionのエミュレートされたネットワーク 条件の 既定の ネットワーク条件が null でない場合、 sessionのエミュレートされたネットワーク 条件の 既定の ネットワーク条件を返す。
-
-
-
null を返す。
-
navigableを、settingsの関連大域オブジェクトの 関連付けられた
Documentのnode navigableとする。 -
emulated network conditionsを、 [navigable]でエミュレートされたネットワーク条件を取得する結果とする。
-
emulated network conditionsが null でなく、かつemulated network conditionsの offlineが true である場合、true を返す。
-
false を返す。
-
ユーザーコンテキストの集合内の各user contextについて:
-
requestおよび user contextでリクエストがユーザー コンテキストから発生する手順が true を返す場合:
-
アクティブ BiDi セッション内の各sessionについて:
注記: user contextは、最大でも 1 つの user context to accept insecure certificates override mapにのみ存在できる。
-
sessionのuser context to accept insecure certificates override mapが user contextを含む場合:
-
accept insecure certificatesを、 sessionの user context to accept insecure certificates override map[user context]とする。
-
accept insecure certificatesが true である場合:
-
endpoint nodeが 安全でない TLS 接続の受け入れをサポートすることを表明する。
-
requestについてBasic Certificate Processing手順を実行するとき、 step a と、その他の実装定義の証明書検証手順をスキップする。
-
-
そうでなければ、requestについてBasic Certificate Processing 手順を実行するとき、 すべての手順を、実装定義の証明書検証手順も含めて実行する。
-
注記: user contextは、最大でも 1 つの user context to proxy configuration mapにのみ存在できる。
-
sessionのuser context to proxy configuration mapが user contextを含む場合:
-
proxy configurationをsessionの user context to proxy configuration map[user context]とする。
-
requestが proxy configurationにより定義されたプロキシ設定を使用することを保証するための、 実装定義の手順を実行する。
注記: 設定はユーザーコンテキスト作成時に検証されるため、 この段階では有効であるものとみなされる。プロキシへのアクセス時のエラーは、 リクエスト処理時にネットワークエラーとして報告される。
-
-
-
-
-
requestでネットワークリクエスト body を収集するかもしれない。
-
before request sent マップが requestを含まない場合、before request sent マップ[request]を 新しい集合に設定する。
-
redirect countをrequestのredirect countとする。
-
redirect countをbefore request sent マップ[request]に追加する。
-
requestのclientが null でない場合、related navigablesを、requestの clientで関連 navigable を取得する結果とする。そうでなければ、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 を取得する結果とする。
-
initiatorが空でない場合、paramsの
initiatorフィールドを initiatorに設定する。 -
表明:paramsは
network.BeforeRequestSentParameters生成規則に一致する。 -
bodyを、
paramsフィールドがparamsに設定された、network.BeforeRequestSent生成規則に一致するマップとする。 -
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のofflineが 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: ここでの要件を厳密化する。人々はおそらく正規表現か同じくらい悪い何かで このデータを解析しようとするだろう。
-
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を、
textフィールドがtextに、exceptionフィールドがexceptionに、lineNumberフィールドがline numberに、columnNumberフィールドがcolumn numberに、stackTraceフィールドがstack traceに設定された、script.ExceptionDetails生成規則に一致するマップとする。 -
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-valueのサイズが 2 でない場合、 エラーをエラーコード invalid argumentで返す。
-
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 is the string "
array" -
-
deserialized value listを、value、 realmおよびsessionが与えられて試行して値リストを逆直列化する 結果とする。
-
成功をデータCreateArrayFromList(deserialized value list)とともに返す。
-
- type is the string "
date" -
-
valueがDate Time String Formatに一致しない場合、 エラーを エラーコード invalid argumentで返す。
-
表明:date resultはabrupt completionでない。
-
成功をデータdate resultとともに返す。
-
- type is the string "
map" -
-
deserialized key-value listを、 value、realmおよびsessionで試行して キー値リストを逆直列化する結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
- type is the string "
object" -
-
deserialized key-value listを、 value、realmおよびsessionで試行して キー値リストを逆直列化する結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
成功をデータObject.fromEntries(iterable) とともに返す。
-
- type is the string "
regexp" -
-
patternを、local protocol valueの
patternフィールドの値とする。 -
flagsを、local protocol valueの
flagsフィールドの値、または そのようなフィールドがない場合は undefined とする。 -
regex_resultをRegexp(pattern, flags)とする。これが例外を投げる場合、エラーを エラーコード invalid argumentで返す。
-
成功をデータregex_resultとともに返す。
-
- type is the string "
set" -
-
deserialized value listを、value、 realmおよびsessionが与えられて試行して値リストを逆直列化する 結果とする。
-
iterableをCreateArrayFromList(deserialized key-value list)とする
-
成功をデータSet object(iterable)とともに返す。
-
- それ以外
- エラーをエラーコード invalid argumentで返す。
- type is the string "
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) is undefined
- remote valueを、
ローカルエンド定義内のscript.UndefinedValue生成規則に一致するマップとする。 - Type(value) is Null
- remote valueを、
ローカルエンド定義内のscript.NullValue生成規則に一致するマップとする。 - Type(value) is String
-
remote valueを、
ローカルエンド定義内のscript.StringValue生成規則に一致し、valueプロパティがvalueに設定されたマップとする。 - Type(value) is Number
- Type(value) is Boolean
- remote valueを、
ローカルエンド定義内のscript.BooleanValue生成規則に一致し、valueプロパティがvalueに設定されたマップとする。 - Type(value) is 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 である最初の手順群を実行する:
- type is the string "
undefined" - 成功をデータundefinedとともに返す。
- type is the string "
null" - 成功をデータnullとともに返す。
- type is the string "
string" - 成功をデータvalueとともに返す。
- type is the string "
number" -
-
表明:Type(value) は String である。
-
valueが文字列 "
NaN" である場合、成功を データ NaN とともに返す。 -
number_resultをStringToNumber(value)とする。
-
number_resultが NaN である場合、エラーをエラーコード invalid argumentで返す
-
成功をデータnumber_resultとともに返す。
- type is the string "
boolean" - 成功をデータvalueとともに返す。
- type is the string "
bigint" -
-
bigint_resultをStringToBigInt(value)とする。
-
bigint_resultが undefined である場合、エラーをエラーコード invalid argumentで返す
-
成功をデータbigint_resultとともに返す。
-
- type is the string "
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を、unwrappedされたglobal objectとする。
-
global objectが
Windowオブジェクトでない場合、nullを返す。 -
documentを、global objectのラップされた
Windowの 関連付けられたDocumentとする。 -
documentのnode navigableを返す。
-
表明:global objectは
WorkerGlobalScopeオブジェクトである。 -
ownersを空のリストとする。
-
global objectに関連付けられたowner 集合内の各ownerについて:
-
owner environment settingsを、ownerの関連設定オブジェクトとする。
-
owner realm infoを、 owner environment settingsが与えられたときのrealm info を取得する 結果とする。
-
owner realm infoが null である場合、続行する。
-
owner realm info["
id"]をownersに付加する。
-
-
ownersを返す。
-
realmを、environment settingsのrealm 実行コンテキストの Realm component とする。
-
realm idを、realmのrealm IDとする。
-
originを、environment settingsのoriginが与えられたときの origin の直列化とする。
-
global objectを、environment settingsにより指定される大域オブジェクトとする
-
最初に一致する条件の下の手順を実行する:
- global object is a
Windowobject -
-
documentを、environment settingsの関連大域オブジェクトの 関連付けられた
Documentとする。 -
navigableを、documentのnode navigableとする。
-
navigableが null である場合、null を返す。
-
navigable idを、navigableのnavigable IDとする。
-
user context idを、navigableの関連付けられたユーザーコンテキストの ユーザーコンテキスト IDとする
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに、contextフィールドが navigable idに、userContextフィールドがuser context idに設定された、script.WindowRealmInfo生成規則に一致するマップとする。
-
- global object is
SandboxWindowProxyobject -
TODO: これが sandbox を扱うための正しい定式化かは不明である。
-
documentを、global objectのラップされた
Windowの 関連付けられたDocumentとする。 -
navigableを、documentのnode navigableとする。
-
navigableが null である場合、null を返す。
-
navigable idを、navigableのnavigable IDとする。
-
user context idを、navigableの関連付けられたユーザーコンテキストの ユーザーコンテキスト IDとする
-
sandbox nameを、 realmが与えられたときのsandbox 名を取得する結果とする。
-
表明:sandbox nameは null でない。
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに、contextフィールドが navigable idに、userContextフィールドがuser context idに、sandboxフィールドがsandbox nameに設定された、script.WindowRealmInfo生成規則に一致するマップとする。
-
- global object is a
DedicatedWorkerGlobalScopeobject -
-
ownersを、global objectが与えられたときのworker の owner を取得する結果とする。
-
表明:ownersは正確に 1 つの項目を持つ。
-
realm infoを、
realmフィールドがrealm idに、originフィールド がoriginに、ownersフィールドが ownersに設定された、script.DedicatedWorkerRealmInfo生成規則に一致するマップとする。
-
- global object is a
SharedWorkerGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールド がoriginに設定された、script.SharedWorkerRealmInfo生成規則に一致するマップとする。
-
- global object is a
ServiceWorkerGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールド がoriginに設定された、script.ServiceWorkerRealmInfo生成規則に一致するマップとする。
-
- global object is a
WorkerGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに設定された、script.WorkerRealmInfo生成規則に一致するマップとする。
-
- global object is a
PaintWorkletGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに設定された、script.PaintWorkletRealmInfo生成規則に一致するマップとする。
-
- global object is a
AudioWorkletGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに設定された、script.AudioWorkletRealmInfo生成規則に一致するマップとする。
-
- global object is a
WorkletGlobalScopeobject -
-
realm infoを、
realmフィールドがrealm idに、originフィールドがoriginに設定された、script.WorkletRealmInfo生成規則に一致するマップとする。
-
- Otherwise:
-
-
realm infoを null とする。
-
- global object is a
-
realm infoを返す
注記: この仕様の将来の変種では、
型名を "-" で分割した後の最後の構成要素が、
WorkerGlobalScopeを実装する
globals については
常に "worker" であり、
WorkletGlobalScopeを
実装する globals については "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を含まない場合、エラーを エラーコード no such handleで返す。
-
成功をデータ handle map[handle id] とともに返す。
-
shared referenceが
script.SharedReference生成規則に一致することを表明する。 -
navigableを、realmでnavigable を取得する結果とする。
-
navigableが
nullである場合、エラーをエラーコード no such nodeで返す。注記: これは realm が Window global でない場合に発生する。
-
shared idを、 shared referenceの
sharedIdフィールドの値とする。 -
nodeを、session、 navigableおよびshared idで試行してnode を取得する結果とする。
-
nodeが
nullである場合、エラーをエラーコード no such nodeで返す。 -
environment settingsを、そのrealm 実行コンテキストの Realm component が realmである環境設定オブジェクトとする。
-
nodeのnode documentのoriginが、environment settingsのoriginと同一オリジンドメインでない場合、 エラーをエラー コード no such nodeで返す。
注記: これにより、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 component が source realmである環境設定オブジェクトとする。
-
environment settingsが関連付けられた
Documentを持つ場合:-
documentを、environment settings の関連付けられた
Documentとする。 -
navigableを、documentのnode navigableとする。
-
navigableが null でない場合、navigable idをnavigableの navigable IDとする。
-
user context idを、navigableの関連付けられたユーザーコンテキストの ユーザーコンテキスト IDとする。
そうでなければ、navigableを null とする。
-
-
sourceを、
realmフィールドがrealmに設定され、contextフィールドが navigableが null でなければnavigable idに設定され、そうでなければ未設定であり、userContextフィールドが |navigable が null でなければuser context idに設定され、そうでなければ未設定である、script.Source生成規則に一致するマップとする。 -
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で試行してnavigable を取得する 結果とする。
-
sandboxが null または空文字列である場合:
-
documentを、navigableのアクティブ文書とする。
-
environment settingsを、その関連大域オブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmを、environment settingsのrealm 実行コンテキストの Realm component とする。
-
-
そうでなければ、realmを、 sandboxおよび navigableが与えられたときの試行して sandbox realm を取得または作成する結果とする。
-
成功をデータrealmとともに返す
-
targetが
script.ContextTarget生成規則に一致する場合:-
sandboxを null とする。
-
targetが "
sandbox" を含む場合、 sandboxを target["sandbox"]に設定する。 -
realmを、 target["
context"]およびsandboxでnavigable から 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" を含む場合、 エラーを エラー コード invalid argument で返す。 -
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 がトップレベルトラバーサブルでない場合、エラーを エラーコード invalid argument で返す。
-
navigable を navigables に付加する。
-
-
-
それ以外で、command parameters が
userContextsを含む場合:-
user contexts を、command parameters["
userContexts"] を用いて 集合を 作成する結果に設定する。 -
user contexts の各 user context id について:
-
user context を、user context id を用いて ユーザーコンテキストを取得する結果に設定する。
-
user context が null である場合、エラーを エラーコード no such user context で返す。
-
-
-
sandbox を、存在する場合は command parameters 内の "
sandbox" フィールドの値とし、それ以外の場合は null とする。 -
script を UUID の文字列表現とする。
-
preload script map を session のpreload script mapとする。
-
preload script map[script] を、
function declarationfunction declaration、argumentsarguments、contextsnavigables、sandboxsandbox、およびuser contextsuser contexts を持つ構造体に設定する。 -
scriptフィールドが script に設定されたscript.AddPreloadScriptResultに一致する新しいマップを返す。
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フィールドの値が与えられたときの試行して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の record)とする。
-
environment settingsでスクリプト実行後の後始末をする。
-
function body evaluation statusを返す。
sessionおよびcommand parametersが与えられたときのリモートエンド手順は次のとおりである:
-
realmを、command parametersの
targetフィールドの値が与えられたときの試行してtarget から realm を取得する 結果とする。 -
realm idを、realmのrealm IDとする。
-
environment settingsを、そのrealm 実行コンテキストの Realm component が 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が与えられたときの例外の 詳細を取得する結果とする。
-
exceptionDetailsフィールドが exception detailsに設定された、script.EvaluateResultException生成規則に一致する新しいマップを返す。
-
-
function objectを、function body evaluation status.[[Value]]とする。
-
IsCallable(function object)が
falseである場合: -
command parameters["
userActivation"]が true である場合、activation notification手順を実行する。 -
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が与えられたときの例外の 詳細を取得する結果とする。
-
exceptionDetailsフィールドが exception detailsに設定された、script.EvaluateResultException生成規則に一致する新しいマップを返す。
-
-
表明:evaluation status.[[Type]]は
normalである。 -
resultを、 evaluation status.[[Value]]、serialization options、result ownership、 直列化内部マップとしての新しいマップ、realmおよび sessionでリモート値として 直列化する結果とする。
-
realmフィールドがrealm idに設定され、 かつresultフィールドがresultに設定された、script.EvaluateResultSuccess生成規則に一致する新しいマップを返す。
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フィールドの値が与えられたときの試行してtarget から realm を取得する 結果とする。 -
realm idを、realmのrealm IDとする。
-
environment settingsを、そのrealm 実行コンテキストの Realm component が 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 である場合、activation notification手順を実行する。 -
environment settingsでスクリプトを実行する準備をする。
-
evaluation statusをScriptEvaluation(scriptの record)に設定する。
-
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で例外の 詳細を取得する結果とする。
-
realmフィールドがrealm idに設定され、exceptionDetailsフィールドがexception detailsに設定された、script.EvaluateResultException生成規則に一致する新しいマップを返す。
-
-
表明:evaluation status.[[Type]]は
normalである。 -
resultを、 evaluation status.[[Value]]、serialization options、result ownership、 直列化内部マップとしての新しいマップ、realmおよび sessionでリモート値として 直列化する結果とする。
-
realmフィールドがrealm idに設定され、 かつresultフィールドがresultに設定された、script.EvaluateResultSuccess生成規則に一致する新しいマップを返す。
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"]で試行して navigable を取得する 結果とする。 -
documentを、navigableのアクティブ文書とする。
-
navigable environment settingsをリストとする。
-
environment settingsの各settingsについて:
-
次の条件のいずれかが満たされる場合:
-
settingsの関連大域オブジェクトの関連付けられた
Documentが documentである -
settingsにより指定された大域オブジェクトが、 documentをそのowner 集合に持つ
WorkerGlobalScopeである
settingsをnavigable environment settingsに付加する。
-
-
-
environment settingsをnavigable environment settingsに設定する。
-
-
realmsをリストとする。
-
environment settingsの各settingsについて:
-
realm infoを、settingsが与えられたときのrealm info を取得する 結果とする。
-
command parametersが
typeを含み、かつrealm info["type"]がcommand parameters["type"]と等しくない場合、続行する。 -
realm infoが null でない場合、realm infoをrealmsに付加する。
-
-
bodyを、
realmsフィールドがrealmsに設定された、script.GetRealmsResult生成規則に一致するマップ とする。 -
成功をデータbodyとともに返す。
これを拡張して、 ネストされた worker などのために realm の親も許可するか? またはすべての祖先 worker を取得するか?
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を含まない 場合、 エラーをエラー コード no such 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 component が realmである環境設定オブジェクトとする。
-
related navigablesを、environment settingsが与えられたときの関連 navigable を取得する結果とする。
-
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でsource を取得する結果とする。
-
paramsを、
channelフィールドがchannel properties["channel"]に、dataフィールドがdataに、sourceフィールドがsourceに設定された、script.MessageParameters生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定されたscript.Message生成規則に一致するマップとする。 -
sessionおよびbodyでイベントを 発火する。
-
7.6.5.2. script.realmCreated イベント
- イベント型
-
script.RealmCreated= (method:"script.realmCreated",params: script.RealmInfo )
window 環境設定オブジェクトを設定する、 worker 環境設定オブジェクトを設定する、またはworklet 環境設定オブジェクトを設定する アルゴリズムのいずれかが呼び出されたとき、settings object を返す直前に:
-
environment settingsを、新しく作成された環境設定オブジェクトとする。
-
realm infoを、environment settingsが与えられたときのrealm info を取得する結果とする。
-
realm infoが null である場合、返す。
-
related navigablesを、environment settingsが与えられたときの関連 navigable を取得する結果とする。
-
bodyを、
paramsフィールドがrealm infoに設定された、script.RealmCreated生成規則に一致するマップ とする。 -
"
script.realmCreated"およびrelated navigablesが与えられたときの、 イベントが有効であるセッションの集合 内の各sessionについて:-
sessionおよびbodyでイベントを 発火する。
-
リモートエンド購読手順は、購読優先度 2 で、session、navigables およびinclude globalが与えられたとき、次のとおりである:
-
environment settingsを、実行準備完了フラグが設定されている、 すべての環境設定オブジェクトのリストとする。
-
environment settingsの各settingsについて:
-
related navigablesを新しい集合とする。
-
settingsの関連大域オブジェクトの関連付けられた
DocumentがDocumentである場合:-
navigableを、settingsの関連大域オブジェクトの 関連付けられた
Documentの node navigableとする。 -
navigableが null である場合、続行する。
-
top-level traversibleを、navigableのトップレベル辿可能とする。
-
top-level traversibleがnavigables内にない場合、続行する。
-
top-level traversibleをrelated navigablesに付加する。
そうでなければ、include globalが false である場合、続行する。
-
-
realm infoを、settingsが与えられたときのrealm info を取得する 結果とする。
-
realm infoが null である場合、続行する。
-
bodyを、
paramsフィールドがrealm infoに設定されたscript.RealmCreated生成規則に一致するマップとする。 -
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のnavigableをrelated navigablesに付加する。
-
documentのworklet global scopes内の各worklet global scopeについて:
-
realmを、worklet global scopeの関連 Realmとする。
-
realm idを、realmのrealm IDとする。
-
paramsを、
realmフィールドがrealm idに設定された、script.RealmDestroyedParameters生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定されたscript.RealmDestroyed生成規則に一致するマップとする。 -
"
script.realmDestroyed"およびrelated navigablesが与えられたときの、 イベントが有効であるセッションの集合 内の各sessionについて:-
sessionおよびbodyでイベントを 発火する。
-
-
-
environment settingsを、その関連大域オブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmを、environment settingsのrealm 実行コンテキストの Realm component とする。
-
realm idを、realmのrealm IDとする。
-
paramsを、
realmフィールドがrealm idに設定された、script.RealmDestroyedParameters生成規則に一致するマップ とする。 -
bodyを、
paramsフィールドがparamsに設定されたscript.RealmDestroyed生成規則に一致するマップ とする。 -
"
script.realmDestroyed"およびrelated navigablesが与えられたときの、 イベントが有効であるセッションの集合 内の各sessionについて:-
sessionおよびbodyでイベントを 発火する。
-
worker イベントループevent loopが破棄されるたびに、 worker がライフサイクルの終端に達したためであれ、worker を終了するアルゴリズムにより時期尚早に破棄されたためであれ:
-
environment settingsを、event loopが担当イベントループである環境設定オブジェクトとする。
-
related navigablesを、environment settingsが与えられたときの関連 navigable を取得する結果とする。
-
realmを、environment settingsの環境設定オブジェクトの Realmとする。
-
realm idを、realmのrealm IDとする。
-
paramsを、
realmフィールドがrealm idに設定された、script.RealmDestroyedParameters生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがparamsに設定された、script.RealmDestroyed生成規則に一致するマップとする。
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"] が与えられた navigable を取得することを試行する結果とする。 -
partition key を、navigable の関連付けられたストレージパーティションのキーとする。
-
データ partition key で 成功を返す。
-
-
partition key を空のマップとする。
-
ストレージ パーティションキー属性のデフォルト値内の各 name → default value について:
-
リモートエンドの必須パーティションキー属性内の各 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を、
cookiesフィールドがserialized cookiesに、partitionKeyフィールドがpartition keyに設定された、storage.GetCookiesResult生成規則に一致するマップとする。 -
成功をデータ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 の expiry 値は、 Cookie Lifetime Limitsに従って、 リモートエンドにより制限されることがある。
- Cookie same site
-
存在する場合はcookie spec["
sameSite"]、そうでなければ same site ポリシーが定義されていないことを示すため未設定のままにする。
この手順が Cookie を Cookie ストアに挿入せずに中止された場合、 エラーをエラー コード unable to set cookieで返す。
-
bodyを、
partitionKeyフィールドがpartition keyに設定されたstorage.SetCookieResult生成規則に一致するマップとする。 -
成功をデータ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を、 partition keyで試行してCookie ストアを取得する結果とする。
-
cookiesを、storeおよび filterで照合する Cookie を取得する結果とする。
-
cookies内の各cookieについて:
-
cookieをstoreから除去する。
-
-
bodyを、
partitionKeyフィールドがpartition keyに設定されたstorage.DeleteCookiesResult生成規則に一致するマップとする。 -
成功をデータ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で、次のconsole 手順を定義する:
-
アクティブ 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が与えられたときのsource を取得する結果とする。
-
stackを現在のスタックトレースとする。
-
entryを、
levelフィールドがlevelに、textフィールドがtextに、timestampフィールドが timestampに、stackTraceフィールドがstackに、 methodフィールドがmethodに、sourceフィールドがsourceに、argsフィールドがserialized argsに設定された、log.ConsoleLogEntry生成規則に一致するマップとする。 -
bodyを、
paramsフィールドがentryに設定されたlog.EntryAdded生成規則に一致するマップとする。 -
settingsを現在の設定オブジェクトとする
-
related navigablesを、settingsが与えられたときの関連 navigable を取得する結果とする。
-
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が与えられたときのsource を取得する結果とする。
-
entryを、
levelが "error" に、textが messageに、sourceがsourceに、timestampがtimestampに、stackTraceフィールドがstackに設定された、log.JavascriptLogEntry生成規則に一致するマップ とする。 -
bodyを、
paramsフィールドがentryに設定されたlog.EntryAdded生成規則に一致するマップとする。 -
related navigablesを、settingsが与えられたときの関連 navigable を取得する結果とする。
-
アクティブ 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 型に加えて存在する。
リモートエンド購読手順は、購読優先度 10 で、session、navigablesおよび include globalが与えられたとき、次のとおりである:
-
sessionのログイベントバッファ内の 各navigable id → eventsについて:
-
maybe contextを、 navigable idが与えられたときにnavigable を取得する結果とする。
-
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 component とする。
-
elementを、reference、realmおよびsessionで試行して リモート参照を逆直列化する 結果とする。
-
elementが
Elementを実装していない場合、 エラーをエラーコード no such elementで返す。 -
成功をデータ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で試行してnavigable を取得する 結果とする。
-
actions optionsを、is element origin手順がis input.ElementOriginに設定され、かつ get element origin手順が sessionが与えられたときのinput.ElementOrigin から Element を取得する 手順の結果に設定された、新しいactions optionsとする。
-
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で試行してnavigable を取得する 結果とする。
-
top-level traversableを、navigableのトップレベル辿可能とする。
-
input stateを、sessionおよび top-level traversableで入力状態を取得する結果とする。
-
actions optionsを、is element origin手順がis input.ElementOriginに設定され、かつ get element origin手順が、 sessionが与えられたときのinput.ElementOrigin から Element を取得する 手順に設定された、新しいactions optionsとする。
-
undo actionsを、input stateのinput cancel listを逆順にしたものとする。
-
undo actions、0、navigableおよび actions optionsで試行してtick アクションをディスパッチする。
-
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で試行してnavigable を取得する結果とする。
-
documentを、navigableのアクティブ文書とする。
-
environment settingsを、その 関連大域オブジェクトの関連付けられた
Documentが documentである環境設定オブジェクトとする。 -
realmを、environment settingsのrealm 実行コンテキストの Realm component とする。
-
elementを、command parameters["
element"]、 realmおよび sessionで試行してリモート参照を逆直列化する結果とする。 -
elementが
Elementを実装していない場合、 エラーをエラー コード no such elementで返す。 -
elementが
HTMLInputElementを実装していない場合、 elementのtypeがファイルアップロード状態でない場合、またはelementが 無効である場合、 エラーをエラー コード unable to set file inputで返す。 -
filesのサイズが 1 より大きく、かつ elementの
multiple属性が設定されていない場合、エラーをエラーコード unable to set file inputで返す。 -
filesを、command parameters["
files"] フィールドの値とする。 -
selected filesを、elementの選択されたファイルとする。
-
filesとselected filesの共通部分のサイズがselected filesのサイズと等しく、かつ filesのサイズとも等しい場合、elementが与えられたとき、 ユーザー操作タスクソース上に要素タスクをキューに入れ、
bubbles属性を true に初期化して、 elementでcancelという名前のイベントを発火する。注記: ブラウザーにおけるキャンセルは通常、 ファイル選択の変更により判定される。言い換えれば、変更がない場合、"cancel" イベントが送信される。
-
そうでなければ、filesをユーザーの選択として、elementの ファイル選択を更新する。
-
何らかの理由で、リモートエンドがelementの選択されたファイルを filesで与えられたパスのファイルに設定できない場合、 エラーをエラーコード unsupported operationで返す。
注記: 例えば、リモートエンドは、 ファイルシステム上に現在存在しないファイルを選択されたファイルに設定できないことがある。
-
成功をデータ 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を、elementのnode documentのnavigableとする。
-
navigable idを、navigableの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を、
contextフィールドがnavigable idに、userContextフィールドがuser context idに、かつmultipleフィールドがmultipleに設定されたinput.FileDialogInfo生成規則に一致するマップとする。 -
elementが null でない場合:
-
shared idを、elementおよびsessionでnode の shared id を取得する結果とする。
-
params["
element"]をshared idに設定する。
-
-
bodyを、
paramsフィールドがparamsに設定されたinput.fileDialogOpened生成規則に一致するマップとする。 -
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 圧縮データを表していなかったため)、エラーをエラーコード invalid web extensionで返す。そうでなければ、entryを、展開されたファイルシステムエントリを含むディレクトリエントリとする。
-
entryを返す。
-
typeをextension data spec["
type"]とする。 -
typeを使用した Web 拡張機能のインストールがサポートされていない場合、エラーをエラー コード unsupported operationで返す。
-
以下の条件とそれに関連付けられた手順のリストにおいて、 関連付けられた条件が true である最初の手順群を実行する:
- type is the string "
path" -
-
pathをextension data spec["
path"]とする。 -
locatorを、パスpathと、ファイルシステムのルートに対応するルートを持つディレクトリロケーターとする。
-
entryを、locatorが与えられたときにエントリを特定する結果とする。
-
- type is the string "
archivePath" - type is the string "
base64" -
-
bytesを、 extension data spec["
value"]のforgiving-base64 decode結果とする。 -
bytesが failure である場合、null を返す。
-
entryを、bytesが与えられたときに試行してzip アーカイブを展開する結果とする。
-
- type is the string "
-
entryを返す。
-
Web 拡張機能のインストールがサポートされていない場合、エラーをエラー コード unsupported operationで返す。
-
extension data specをcommand parameters["
extensionData"]とする。 -
extension directory entryを、 extension data specで試行してWeb 拡張機能データ仕様を展開する結果とする。
-
extension directory entryが null である場合、エラーをエラーコード invalid web extensionで返す。
-
extension directory entryから Web 拡張機能をインストールする実装定義の手順を実行する。これが失敗した場合、エラーをエラーコード invalid web extensionで返す。そうでなければ、extension idを、新しくインストールされた Web 拡張機能の一意な識別子とする。
-
resultを、
extensionフィールドがextension idに設定されたwebExtension.InstallResult生成規則に一致するマップとする。 -
成功をデータ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
-
extensionをcommand parameters["
extension"]とする。 -
リモートエンドがextensionと等しい ID を持つ Web 拡張機能を持たない場合、 エラーをエラーコード no such web extensionで返す。
-
Web 拡張機能をリモートエンドから除去する、任意の実装定義の手順を実行する。これが失敗した場合、エラーをエラーコード unknown errorで返す。
-
成功をデータ null とともに返す。
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 を挿入する:
-
device pixel ratio overrides が window の navigable を contains する場合、device pixel ratio overrides[window の navigable] を返す。
9. 付録
この節は非規範的である。
9.1. 外部仕様
注: この list は網羅的ではなく、最新でない可能性がある。
次の外部仕様は、追加の WebDriver BiDi modules を定義する: