[4] [DFN[[RUBYB[環境設定群オブジェクト]@en[environment settings object]]]]は、
[[スクリプト]]実行や[[イベントループ]]に関わる諸条件の集合体です。
[[大域オブジェクト]]ごとに存在します。

* 仕様書

[REFS[
- [3] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-14 21:54:07 +09:00]] 版) <https://html.spec.whatwg.org/#environment-settings-object>'''
-- [49] 旧 [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#script-settings-object>
- [34] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-14 21:54:07 +09:00]] 版) <https://html.spec.whatwg.org/#set-up-a-worker-environment-settings-object>
-- [50] 旧 [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#set-up-a-worker-script-settings-object>
- [45] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-27 03:13:07 +09:00]] 版) <https://html.spec.whatwg.org/#concept-realm-settings-object>
- [39] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#calling-scripts>
- [59] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#garbage-collection-and-browsing-contexts>
- [24] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-12-22 10:28:15 +09:00]] 版) <https://html.spec.whatwg.org/#javascript-execution-context's-settings-object>
- [96] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-08-01 13:15:24 +09:00]]) <https://html.spec.whatwg.org/#global-object>
-- [201] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#entry-settings-object>'''
-- [204] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#candidate-entry-settings-object>
-- [209] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#incumbent-settings-object>
- [235] [CITE@en-US-x-hixie[HTML Standard]], [TIME[2021-04-12T15:12:42.000Z]], [TIME[2021-04-13T08:27:09.161Z]] <https://html.spec.whatwg.org/#relevant-agent>
- [69] [CITE@en[Upgrade Insecure Requests]] ([TIME[2015-10-07 03:24:10 +09:00]] 版) <https://w3c.github.io/webappsec-upgrade-insecure-requests/#nesting>
- [192] [CITE@en[Fetch Standard]] ([TIME[2017-02-22 20:39:12 +09:00]]) <https://fetch.spec.whatwg.org/#concept-request-client>
- [188] [CITE@en-US[Fetch Standard]] ([TIME[2016-05-24 18:42:15 +09:00]]) <https://fetch.spec.whatwg.org/#concept-request-referrer>
- [203] [CITE@en[Service Workers Nightly]] ([TIME[2017-02-16 20:10:49 +09:00]]) <https://w3c.github.io/ServiceWorker/#service-worker-client-concept>
- [216] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#serviceworkercontainer-service-worker-client>
- [218] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#dfn-job-client>
- [214] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#run-service-worker-algorithm>
]REFS]

* 意味

[18] [[環境設定群オブジェクト]]と[[大域オブジェクト]] (と [[Realm]]) には常に1対1の関係があります。

;; [19] [[大域オブジェクト]]が[[ごみ収集]]されない間は[[大域オブジェクト]]の[F[スクリプト設定群オブジェクト]]も[[ごみ収集]]されません。

[HISTORY[
[65] 以前は[DFN[[RUBYB[[[スクリプト設定群オブジェクト]]]@en[script settings object]]]]と呼ばれていました。
]HISTORY]

;; [70] [[複合語]]となるときは、省略されて「[RUBYB[設定群オブジェクト]@en[settings object]]」となります。

* 状態

[181] [DFN[[RUBYB[環境]@en[environment]]]]は、次の[[状態]]を持ちます [SRC[>>3]]。
[FIG(list members)[

: [DFN[[F[[RUBYB[[[識別子]]]@en[id]]]]]] :
[[空文字列]]または[[環境]]を固有に識別する[[不透明]]な[[文字列]]です。
:[62] [DFN[[F[[RUBYB[[[作成URL]]]@en[creation URL]]]]]]:
関連付けられた[[資源]]の [[URL]] です。
[[文書の[F[番地]]]]とは違って、 [CODE(DOMm)@en[[[pushState]]]] などにより変化しません。
: [DFN[[F[[RUBYB[[[対象閲覧文脈]]]@en[target browsing context]]]]]] :
[CODE[null]] または[[navigation request]]の対象の[[閲覧文脈]]。
: [F[活性サービスワーカー]] :
[CODE[null]] または[[環境]]を[[制御]]する[[サービスワーカー]]。
: [DFN[[F[[RUBYB[[[実行準備完了フラグ]]]@en[execution ready flag]]]]]] :
[[フラグ]]。初期値は[[偽]]。
[[活性文書の設定]]で変更されます。
:[16] [F[起源][環境設定群オブジェクトの起源]] [SRC[>>3]]:
[[スクリプト]]を介した多くの操作の[[セキュリティー]]検査に使われる[[起源]]です。
([CITE[HTML Standard]] の定義では[[環境設定群オブジェクト]]にあって[[環境]]にはありませんが、
[[環境]]が[[サービスワーカークライアント]]として使われるときには定義されます。
[[環境設定群オブジェクトの起源]]参照。)
]FIG]

[5] [[環境設定群オブジェクト]]は、[[環境]]に加えて、次の[[状態]]を持ちます。

[FIG(list members)[
: [F[[[realm実行文脈]]]] :
本[[環境設定群オブジェクト]]を使うすべての[[スクリプト]]
(同じ [[realm]] のすべての[[スクリプト]]) で共有する[[JavaScript実行文脈]]。 [SRC[>>3]]
: [F[[[モジュール写像]]]] [SRC[>>3]] : 
利用する[[モジュール]]に関する情報を保持する[[写像]]です。
:[10] [DFN[[RUBYB[[[有責閲覧文脈]]]@en[responsible browsing context]]]]:
本[[設定群オブジェクト]]を使う[[スクリプト]]による動作に責任をもつ[[閲覧文脈]]です。 [SRC[>>3]] [[強い参照]]です [SRC[>>59]]。
:[11] [DFN[[RUBYB[[[有責文書]]]@en[responsible document]]]]:
本[[設定群オブジェクト]]を使う[[スクリプト]]による動作に責任を持つ[[文書]]です。 [SRC[>>3]]
[[強い参照]]です [SRC[>>59]]。
:[12] [DFN[[RUBYB[[[有責イベントループ]]]@en[responsible event loop]]]]:
どの[[イベントループ]]を使うか自明でない時に使う[[イベントループ]]です。 [SRC[>>3]]
[[イベントループ]]から逆方向に参照されることもあります
([[イベントループ]]の[F[[[環境設定群オブジェクト]]群]][[弱集合]])。
:[14] [DFN[[RUBYB[[[API URL文字符号化]]]@en[API URL character encoding]]]]:
本[[設定群オブジェクト]]を使う[[スクリプト]]が呼ぶ [[API]] で [[URL]]
を[[符号化]]するために使われる[[文字符号化]]です。 [SRC[>>3]]
:[15] [DFN[[RUBYB[[[API基底URL]]]@en[API base URL]]]]:
本[[設定群オブジェクト]]を使う[[スクリプト]]が呼ぶ [[API]] で[[相対URL]]
を[[解決]]するために使われる[[絶対URL]]です。 [SRC[>>3]]
:[[HTTPS状態]]:本[[環境設定群オブジェクト]]に関連付けられた[[資源]]の[[輸送路]]の保安特性です [SRC[>>3]]。
: [F[参照元ポリシー]] : [[fetch]] の際に[[要求]]の[F[参照元]]の決定に関与します。
:[[非保安要求ポリシー]]: [CODE(URI)@en[[[http:]]]] → [CODE(URI)@en[[[https:]]]]
の [[URL]] 書き換えを行うか否か。
:[[非保安navigate格上げ集合]]: [[navigate]] 時に
[CODE(URI)@en[[[http:]]]] → [CODE(URI)@en[[[https:]]]] の [[URL]] 書き換えを行うか否か。
:[F[[[未決拒絶された約束弱集合]]]]: 
[[拒絶]]された[[約束]]オブジェクトのリスト。初期状態では[[空]]です。
:[F[[[これから通知する拒絶された約束リスト]]]]:
[[拒絶]]された[[約束]]オブジェクトのリスト。初期状態では[[空]]です。
: [F[[[大域オブジェクト]]]] : [F[Realm]]の[F(ss)[GlobalObject]] [SRC[>>3]]。
[[強い参照]]です [SRC[>>59]]。
: [F[[[Realm]]]] : [F[[[realm実行文脈]]]]の[F[[[Realm]]]] [SRC[>>3]]。
: [F[時刻起源]] :
: [F[文脈的保安]]、[F[保安文脈]]、[F[非保安文脈]] : [[保安文脈]]であるか否か
]FIG]

;; [23] 仕様上各構成要素は値ではなく、[[アルゴリズム]]となっています。各構成要素は固定の値を持つのではなく、
参照される時点で評価した結果の値が用いられることになります。

[HISTORY[
[73] かつては次のような規定がありました。

[FIG(list members)[
:[6] [DFN[[RUBYB[[[スクリプト実行環境]]]@en[script execution environment]]]]:
[[利用者エージェント]]が対応している各[[スクリプト言語]]について、
当該[[スクリプト言語]]に依存した[[スクリプト実行環境]]の性質です。 [SRC[>>3]]
[7] [[JavaScript]] の場合、[RUBYB[[[解釈器]]]@en[interpreter]]、
[[実行文脈のスタック]]、[[大域コード]]と[[関数コード]]と得られた [CODE(JS)@en[[[Function]]]]
[[オブジェクト]]、その他です。 [SRC[>>3]]
これは [[JavaScript]] 以外の言語への対応が廃止されたため、
[[realm実行文脈]]に変更されました。
:[8] [DFN[[RUBYB[[[大域オブジェクト]]]@en[global object]]]]:
本[[設定群オブジェクト]]を使う[[スクリプト]]の[[コード]]が呼べる [[API]] 
を提供する[[オブジェクト]]です。 [SRC[>>3]]
[9] これが空の[[オブジェクト]]だと、環境に作用することを何もできません。 [SRC[>>3]]
[60] [[強い参照]]です [SRC[>>59]]。
:[13] [DFN[[F[[RUBYB[[[API参照子源]]]@en[API referrer source]]]]]]:
[[リファラー]]の決定に使われていました。
[[fetch]] との統合により廃止されています。 [[Referrer Policy]] との統合により [[referrer]]
の決定はかなり複雑化しています。
:[17] [[実効スクリプト起源]] [SRC[>>3]]:
[[スクリプト]]を介した一部の操作の[[セキュリティー]]検査に使われる[[起源]]です。
[CODE(JS)@en[document.domain]] の影響を受けます。
]FIG]
]HISTORY]

* [CODE(DOMi)@en[Window]] の場合

[21] [[JavaScript実行文脈]][VAR[実行文脈]]と[VAR[予約環境]]の[[環境設定群オブジェクト]]は、
次のようなものです。
ここで、
[VAR[realm]] は、[VAR[実行文脈]]の [F[Realm]] とします。
[VAR[窓]]は、[VAR[realm]] の[F[大域オブジェクト]]とします。

[FIG(list members)[[175] [[環境設定群オブジェクト]]

: [F[識別子][環境設定群オブジェクト]] :
[VAR[予約環境]]が [CODE[null]] なら、新しい固有識別子。
それ以外なら、[VAR[予約環境]]の[F[識別子][環境設定群オブジェクト]]。
[SRC[>>3]]
:[F[[[作成URL]]]]: 
[VAR[予約環境]]が [CODE[null]] なら、作成時点での、[VAR[窓]]の[F[文書]]の[F[番地][文書の番地]]。
それ以外なら、[VAR[予約環境]]の[F[作成URL]]。 [SRC[>>3]]
: [F[対象閲覧文脈][環境設定群オブジェクト]] :
[VAR[予約環境]]が [CODE[null]] なら、 [CODE[null]]。
それ以外なら、[VAR[予約環境]]の[F[対象閲覧文脈]]。 [SRC[>>3]]
: [F[活性サービスワーカー]] :
[VAR[予約環境]]が [CODE[null]] なら、 [CODE[null]]。
それ以外なら、[VAR[予約環境]]の[F[活性サービスワーカー]]。 [SRC[>>3]]
:[22] [F[[[realm実行文脈]]]]: [VAR[実行文脈]]。 [SRC[>>3]]
: [F[モジュール写像]] :
[VAR[窓]]の[F[文書]]の[F[モジュール写像]]。 [SRC[>>3]]
:[25] [F[[[有責閲覧文脈]]]]: [VAR[窓]]の[F[[[閲覧文脈]]]]。 [SRC[>>3]]
:[26] [F[[[有責文書]]]]: [VAR[窓]]の[F[文書]]。 [SRC[>>3]]
:[27] [F[[[有責イベントループ]]]]: [VAR[窓]]の[F[[[閲覧文脈]]]]が属する[[関連する類似起源閲覧文脈の単位]]の[F[[[イベントループ]]]]。 [SRC[>>3]]
:[29] [F[[[API URL文字符号化]]]]: [VAR[窓]]の[F[文書]]の[F[[[文字符号化]]]]。 [SRC[>>3]]
:[30] [F[[[API基底URL]]]]: [VAR[窓]]の[F[文書]]の[F[[[基底URL]]]]。 [SRC[>>3]]
:[31] [F[[[起源]]]]: [VAR[窓]]の[F[文書]]の[F[起源][文書の起源]]。 [SRC[>>3]]
:[F[[[HTTPS状態]]]]: [VAR[窓]]の[F[文書]]の[F[[[HTTPS状態]]]]。 [SRC[>>3]]
: [F[参照元ポリシー]] : 次の[[手順群]]の返す値 [SRC[>>3]]。
[FIG(steps)[
= [168] [VAR[文書]]を、[VAR[窓]]の[F[文書]]に設定します。
= [169] [VAR[文書]]の[F[[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]]]が[[真]]で[VAR[文書]]の[F[参照元ポリシー]]が[[空文字列]]の間、繰り返し、
== 
[170] [VAR[文書]]を、
[VAR[文書]]の[F[閲覧文脈]]の[F[包含子文書]]に設定します。
= [171] [VAR[文書]]の[F[参照元ポリシー]]を返します。
]FIG]
: [F[時刻起源]] : [VAR[窓]]の[F[文書]]の[F[時刻起源]]。
]FIG]

;; [78] 先述の通り、各欄は (作成時点と断っているものを除き) 初期化時の値ではなく、
アクセス時点の値を使います。

[71] この初期設定の実行を [[HTML Standard]] は[VAR[実行文脈]]に関する[DFN[[RUBYB[閲覧文脈環境設定群オブジェクトの設定]@en[set up a browsing context environment settings object]]]]
[SRC[>>3]]
と呼んでいます。
[[閲覧文脈の作成]]や [CODE(JS)@en[[[document.open]]]] から呼び出されます。
その際、 [VAR[realm]] の [F(ss)[HostDefined]] は、この初期設定された[[環境設定群オブジェクト]]に設定されます [SRC[>>3]]。
また、[VAR[予約環境]]が [CODE[null]] でなければ、
[VAR[予約環境]]の[F[識別子][環境設定群オブジェクト]]は[[空文字列]]に設定されます [SRC[>>3]]。

* 専用ワーカーと共有ワーカーの場合

[35] [[ワーカー]]については、
[[JavaScript実行文脈]][VAR[実行文脈]]と[[環境設定群オブジェクト]][VAR[外側設定群]]について[DFN[[RUBYB[[[ワーカー環境設定群オブジェクトを設定]]]@en[set up a worker environment settings object]]]]する手順により、
次のような[[環境設定群オブジェクト]]が[[ワーカー]]作成時に作られます。
ここで、
[VAR[realm]] は、[VAR[実行文脈]]の [F[Realm]] とします。
[VAR[大域オブジェクト]]は、[VAR[realm]] の[F[大域オブジェクト]]とします。

[FIG(list members)[ [182] [[環境設定群オブジェクト]]

: [F[識別子][環境設定群オブジェクト]] : 新しい固有識別子 [SRC[>>34]]。
: [F[[[作成URL]]]] : [VAR[大域オブジェクト]]の[F[[[ワーカーのURL]]]] [SRC[>>34]]。
: [F[対象閲覧文脈]] : [CODE[null]] [SRC[>>34]]。
: [F[活性サービスワーカー]] : [CODE[null]] [SRC[>>34]]。
:[36] [F[[[realm実行文脈]]]]: [VAR[実行文脈]]。 [SRC[>>34]]
: [F[モジュール写像]] : [VAR[大域オブジェクト]]の[F[モジュール写像]]。 [SRC[>>34]]
:[F[[[有責閲覧文脈]]]]: 作成時点での、[VAR[外側設定群]]の[F[[[有責閲覧文脈]]]]。 [SRC[>>34]]
:[F[[[有責文書]]]]: なし。 [SRC[>>34]]
:[F[[[有責イベントループ]]]]:新たに作成した[[イベントループ]]。 [SRC[>>34]]
:[F[[[API URL文字符号化]]]]: [[UTF-8]]。 [SRC[>>34]]
:[F[[[API基底URL]]]]: [VAR[大域オブジェクト]]の[F[[[ワーカーのURL]]]]。 [SRC[>>34]]
: [F[起源]] :
作成時点における、
[VAR[大域オブジェクト]]の[F[ワーカーのURL]]の[F[scheme][URL scheme]]が 
[CODE(URI)@en[data][data:]] なら[[不透明起源]]、
そうでなければ[VAR[外側設定群]]の[F[起源]]。 [SRC[>>34]]
:[F[HTTPS状態]] : [VAR[大域オブジェクト]]の [F[HTTPS状態]]。 [SRC[>>34]]
:[F[参照元ポリシー]] : [VAR[大域オブジェクト]]の[F[参照元ポリシー]]。 [SRC[>>34]]
: [F[非保安要求ポリシー]] : 作成時点で、[VAR[外側設定群]]の[F[非保安要求ポリシー]]が
「格上げする」なら、「格上げする」 [SRC[>>69]]、それ以外の場合は「格上げしない」。
:[F[[[非保安navigate格上げ集合]]]]: 作成時点での、[VAR[外側設定群]]の[F[非保安navigate格上げ集合]]の各値を含む[[集合]]。 [SRC[>>69]]
: [F[時刻起源]] : [VAR[大域オブジェクト]]の[F[時刻起源]]。
]FIG]

;; [33] [[ワーカー]]は[[閲覧文脈]]のように他の[[文書]]に切り替わることがないので、
作成時の値がその後もそのまま使われます。

[76] なお、 [VAR[realm]] の [F(ss)[HostDefined]] は、
この初期設定された[[環境設定群オブジェクト]]に設定されます [SRC[>>34]]。

* サービスワーカーの場合

[215] [[サービスワーカーを走らせる]]処理では、
[VAR[Realm実行文脈]]、[VAR[大域文脈]]、
[VAR[ワーカー]]、[VAR[クライアント]]について次のように設定されます [SRC[>>214]]。

[FIG(list members)[
: [F[Realm実行文脈]] : [VAR[Realm実行文脈]]
: [F[大域オブジェクト]] : [VAR[大域文脈]]
: [F[有責イベントループ]] : 新しい[[イベントループ]]
: [F[参照元ポリシー]] : [VAR[大域文脈]]の[F[参照元ポリシー]]
: [F[API URL文字符号化]] :  [[UTF-8]]
: [F[API基底URL]] : [VAR[ワーカー]]の[F[スクリプトURL][サービスワーカー]]
: [F[起源]] : [VAR[クライアント]]の[F[起源]]
: [F[作成URL]] : [VAR[大域文脈]]の[F[URL][ワーカーのURL]]
: [F[HTTPS状態]] : [VAR[大域文脈]]の[F[HTTPS状態]]
]FIG]

* 演算

[38] [CODE(DOMm)@en[[[postMessage]]]] では、[[設定群オブジェクト]]に関して
[[transfer a [CODE(DOMi)@en[Transferable]] object]] が実行されます。この手順では、
特定環境で作られたオブジェクトを他の環境へと移し替える操作が行われます。

-*-*-

[231] 
[[環境]]には、
[DFN[[RUBY[環境廃棄手順群]@en[environment discarding steps]]]]があります
[SRC[[CITE[HTML Standard]]]]。

[232] [[navigate]] や[[ワーカーを走らせる]]手順群から呼び出される場合があります。


* [F[設定群オブジェクト]] (JavaScript 実行文脈)

[41] [DFN[[RUBYB[[[JavaScript実行文脈]]の[F[設定群オブジェクト]]]@en[JavaScript execution context's settings object]]]]は、
その[[JavaScript実行文脈]]の [F[[CODE[[[ScriptOrModule]]]]]] の
[CODE[[F(ss)[HostDefined]]]] の[[スクリプト]]の[F[[[設定群オブジェクト]]]]です
[SRC[>>24]]。

* [F[設定群オブジェクト]] (Realm)

[61] [DFN[[RUBYB[[[Realm]] の[F[設定群オブジェクト]]]@en[the Realm's [F[settings object]]]]]]
[SRC[>>45]]
は、 [[Realm]] に対応する[[環境設定群オブジェクト]]です。
両者には常に1:1の対応関係が存在します。

[74] [[JavaScript]] の[[仕様書]]上の概念では、 [[Realm]] の [F(ss)[HostDefined]]
が[F[設定群オブジェクト]]を表しています。

* 設定群オブジェクトの選択

[97] 色々な場面で[[設定群オブジェクト]]や[[大域オブジェクト]]や [[Realm]] を参照するに当たり、
どれを使うかについて、次の4種類の選択肢があります [SRC[>>96]]。

[FIG(list)[
: [DFN[[RUBYB[入口]@en[entry]]]] :
現在走っている[[スクリプト]]を開始した[[スクリプト]] ([[利用者エージェント]]から[[著者]]のコードを呼び出したところの[[スクリプト]]または[[関数]]) に関するものです。
: [DFN[[RUBYB[現職]@en[incumbent]]]] :
[[スタック]]上で最も直近に入った[[著者]]の[[関数]]や、
現在走っている[[コールバック]]を元々[[スケジューリング]]した[[著者]]の[[スクリプト]]や[[関数]]に関するものです。
: [DFN[[RUBYB[現在]@en[current]]]] :
現在走っている[[関数オブジェクト]] ([[JavaScript]] 以外で実装されている[[利用者エージェント]]の組み込みの[[関数]]を含む。) に関するものです。
: (ある[[プラットフォームオブジェクト]]に) [DFN[[RUBYB[関連]@en[relevant]]]] :
現在走っている[[関数オブジェクト]]の [CODE(JS)@en[this]] 値やいずれかの[[引数]]などの[[プラットフォームオブジェクト]]の[F[Realm]]
のもの。
]FIG]

[75] [[JavaScript]] 自体の機能は、'''[[現在]]'''を使っています。
[[Web]] の機能は、原則として'''[[関連]]'''を使う[SHOULD[べきです]]。 [SRC[>>96]]

[EG[
[98] 例えば、同じ[[オブジェクト]]を何度も返すような場合、その[[オブジェクト]]の作成には、
[[文脈オブジェクト]]の'''[[関連]]'''を使う[SHOULD[べきです]] [SRC[>>96]]。
(これは、違う [[Realm]] の[[オブジェクト]]をずっと保持し続けなければならないのを防ぐためです。
[SRC[>>96]])
]EG]

[174] [[コンストラクター]]では、'''[[関連]]'''となるものが無いので、
'''[[現在]]'''を使う[SHOULD[べきです]] [SRC[>>96]]。

[99] [[後方互換性]]のため、この原則に従わないものも少なくありません。
この原則は2016年の [[HTML Standard]] の改訂で整備され、
既存の[[メソッド]]等も ([[Web互換性]]を失わない範囲で) 整理されています。

[HISTORY[

[105] [[入口設定群オブジェクト]]は、[[関連する類似起源閲覧文脈の単位]]内の[[スクリプト]]の[[基底URL]]の[[解決]]その他に用いられます。

[106] [[現職設定群オブジェクト]]は、候補かどうかを問わず一番最近追加された[[スクリプト設定群オブジェクト]]です。

[107] [[現職設定群オブジェクト]]と[[入口設定群オブジェクト]]の使い分けは明確には説明されていないのですが、
[FIG(list)[
- [[入口設定群オブジェクト]]を使うのは
-- [[API]] 内での[[相対URL]]の[[解決]]
-- [[API]] 内で扱う対象が[[同じ起源]]かどうかの判定
- [[現職設定群オブジェクト]]を使うのは
-- [[閲覧文脈]]や[[ワーカー]]が[[同じ起源]]かどうかの判定
]FIG]
... となっているようです。

[108] [[入口設定群オブジェクト]]は[[ハイパーリンク]]をたどる処理の定義でも参照されていて、
[[入口設定群オブジェクト]]があれば[[スクリプト]]からの呼び出しということで[[例外]]を投げ、
そうでなければ何もしないという判断に使われています。

[40] かつては[[関連する類似起源閲覧文脈の単位]]ごとに1つ、
[[スクリプト設定群オブジェクトのスタック]]があるとされていました。
その後 [[JavaScript実行文脈スタック]]上の状態に応じて、
[[入口設定群オブジェクト]]や[[現職設定群オブジェクト]]が決まると改められました。

[173] 当初は [[Web]] でも [[JavaScript]] と同じく'''[[現在]]'''を原則とすることが検討されましたが、
現実的には'''[[関連]]'''を原則とせざるを得ないと改められました。
]HISTORY]

-*-*-

[200] この他に、[[環境設定群オブジェクト]]が[[アルゴリズム]]への入力として与えられて、
それを使って処理することがあります。 (もちろんその入力は、先述の4種類のいずれかの形で得られたものです。)

[202] [[アルゴリズム]]への入力の形になった[[環境設定群オブジェクト]]や[[環境]]は、
「[[クライアント]]」と呼ばれることがあります。

* 入口設定群オブジェクト

[115] [DFN[[RUBYB[入口実行文脈]@en[entry execution context]]]]は、
[[JavaScript実行文脈スタック]]にある最も直近に [[push]] された
[[Realm実行文脈]]です。 [SRC[>>96]]

[116] [DFN[[RUBYB[入口Realm]@en[entry Realm]]]]は、[[入口実行文脈]]の[F[Realm]]です。 [SRC[>>96]]

[117] [DFN[[RUBYB[入口設定群オブジェクト]@en[entry settings object]]]]は、[[入口Realm]]の[F[環境設定群オブジェクト]]です
[SRC[>>96]]。

[118] [DFN[[RUBYB[入口大域オブジェクト]@en[entry global object]]]]は、[[入口Realm]]の[F[大域オブジェクト]]です [SRC[>>96]]。

[HISTORY[
[222] [DFN[[RUBYB[入口実行文脈]@en[entry execution context]]]]は、
[[JavaScript実行文脈スタック]]にある最も直近に [[push]] された[F[入口計数器]]が
[N[0]] より大きな[[実効文脈]]です。 [SRC[>>96]]

[114] [[realm実行文脈]]は、その[[コード評価状態]]において、
[DFN[[F[[RUBYB[[[入口計数器]]]@en[entrance counter]]]]]]を持ちます。
初期値は [N[0]] です。 [SRC[>>96]]

;; [[スクリプトの実行]] ([[スクリプトを走らせる準備]]/[[スクリプトを走らせた後の片付け]]) で、値が変化します。
]HISTORY]

[HISTORY[
[101] 初期の定義:
[DFN[[RUBYB[[[入口設定群オブジェクト]]]@en[entry settings object]]]]は、
[[スクリプト設定群オブジェクトのスタック]]で一番最近追加された[[候補入口設定群オブジェクト]]たる[[スクリプト設定群オブジェクト]]です。
そのような[[スクリプト設定群オブジェクト]]がなければ、[[入口設定群オブジェクト]]はありません。 [SRC[>>201]]

[100] その後の定義:
[DFN[[RUBYB[[[入口設定群オブジェクト]]]@en[entry settings object]]]]は、
[[JavaScript実行文脈スタック]]中の[[JavaScript実行文脈]]の[F[[[設定群オブジェクト]]]]で[F[[[候補入口設定群オブジェクト]]]]フラグが立っているもののうち、
スタック上で最上に位置するものです [SRC[>>201]]。

[102] [[JavaScript実行文脈スタック]]中にある[[JavaScript実行文脈]]の[F[[[設定群オブジェクト]]]]として設定された[[スクリプト設定群オブジェクト]]には、
[DFN[[RUBYB[[[候補入口設定群オブジェクト]]]@en[candidate entry settings object]]]] [SRC[>>204]] というフラグがあります。

;; [103] 同じ[[スクリプト設定群オブジェクト]]が複数回[[JavaScript実行文脈スタック]]上に現れることがありますから、
このフラグは[[環境設定群オブジェクト]]自体のフラグというよりは、
[[スタック]]上のエントリーに属するフラグです。

[104] このフラグは[[コールバックを走らせる準備]]の手順内で[[実行文脈]]が [[push]]
される時に付与されます。 [[JavaScript]] の [CODE(JS)@en[[[SourceElements]]]] の評価によって [[push]]
される際には付与されません。おおよそ、[[利用者エージェント]]から[[スクリプト]]を呼び出す際の[[スクリプト設定群オブジェクト]]が候補になるといえます。

]HISTORY]

* 現職設定群オブジェクト

[153] [[JavaScript実行文脈]]は、[[コード評価状態]]において、
[DFN[[F[[RUBYB[[[現職決定時に飛ばす計数器]]]@en[skip-when-determining-incumbent counter]]]]]]を持ちます。
初期値は [N[0]] です。 [SRC[>>96]]

;; [[コールバックの実行]]時に変化します。

[154] [[イベントループ]]は、[DFN[[F[[RUBYB[[[バックアップ現職設定群オブジェクトスタック]]]@en[backup incumbent settings object stack]]]]]]を持ちます。
初期状態は、[[空]]です。 [SRC[>>96]]

[155] [DFN[[RUBYB[最上スクリプト持ち実行文脈]@en[topmost script-having execution context]]]]は、
[[JavaScript実行文脈スタック]]中 [F[[CODE[ScriptOrModule]]]]
が [CODE[null]] でない最上のものです。そのようなものがなければ、 [CODE[null]] です。
[SRC[>>96]]

[156] [DFN[[RUBYB[現職設定群オブジェクト]@en[incumbent settings object]]]]は、
次の手順群が返すものです [SRC[>>96]]。
[FIG(steps)[
= [157] [VAR[文脈]]を、[[最上スクリプト持ち実行文脈]]に設定します。
= [158] [VAR[文脈]]が [CODE[null]] か、[VAR[文脈]]の[F[現職決定時に飛ばす計数器]]が [N[0]]
より大きいなら、
== [159] [[バックアップ現職設定群オブジェクトスタック]]が[[空]]なら、[[現職設定群オブジェクト]]は存在せず、使うことができません。
== [160] それ以外なら、[[バックアップ現職設定群オブジェクトスタック]]の最上の[[設定群オブジェクト]]を返します。
= [161] それ以外なら、
== [162] [VAR[文脈]]の[F[Realm]]の[F[設定群オブジェクト]]を返します。
]FIG]

[163] [DFN[[RUBYB[現職Realm]@en[incumbent Realm]]]]は、
[[現職設定群オブジェクト]]の[F[Realm]]です [SRC[>>96]]。

[165] [DFN[[RUBYB[現職大域オブジェクト]@en[incumbent global object]]]]は、[[現職設定群オブジェクト]]の[F[大域オブジェクト]]です [SRC[>>96]]。

[HISTORY[
[130] かつての定義:
[DFN[[RUBYB[[[現職設定群オブジェクト]]]@en[incumbent settings object]]]]は、
[[スクリプト設定群オブジェクトのスタック]]に一番最近追加された[[スクリプト設定群オブジェクト]]です。
[[スクリプト設定群オブジェクト]]がなければ、[[現職設定群オブジェクト]]はありません。 [SRC[>>209]]

[54] その後の定義:
[DFN[[RUBYB[[[現職設定群オブジェクト]]]@en[incumbent settings object]]]]は、
次のようにして得られるものです [SRC[>>209]]。

[FIG(steps)[
= [125] [VAR[結果]]を、 [CODE[[[GetActiveScriptOrModule]]()]]
[[抽象操作]]の結果に設定します。
= [126] [VAR[結果]]が null なら、
== [127] [[現職設定群オブジェクト]]はありません。
= [128] それ以外なら、
== [129] [VAR[結果]]の [F(ss)[[CODE[HostDefined]]]]
の[[スクリプト]]の[F[[[設定群オブジェクト]]]]を返します。
]FIG]


[131] [[入口設定群オブジェクト]]は、[[スクリプト設定群オブジェクトのスタック]]のうち[[候補入口設定群オブジェクト]]とされているもののみから一番最近のものを選んでいますから、
[[現職設定群オブジェクト]]と同じになることもあれば、違うこともあります。

[132] [[スクリプト設定群オブジェクトのスタック]]は[[関連する類似起源閲覧文脈の単位]]ごとにありますから、
[[現職設定群オブジェクト]]も[[関連する類似起源閲覧文脈の単位]]ごとに存在します。
]HISTORY]

[133] [[現職設定群オブジェクト]]は、[[API]] の[[起源]]の検査などに使われます。

[134] 本来、[[同一起源ポリシー]]により、[[スクリプト]]が呼び出せるのは同じ[[起源]]の[[スクリプト]]だけのはずですから、どの[[環境設定群オブジェクト]]でも
([[大域オブジェクト]]の[[環境設定群オブジェクト]]や[[入口設定オブジェクト]]でも)
良さそうなものです。しかし [CODE(JS)@en[[[document.domain]]]] に値が設定されると[[実効スクリプト起源]]が変化しますから、
それ以前に異なる[[大域オブジェクト]]由来の[[関数]]への参照を取得していれば、
異なる[[実効スクリプト起源]]を持つ[[スクリプト]]を実行できることになります。
また [CODE(JS)@en[[[document.domain]]]] 設定以後は異なる[[起源]]で同じ[[実効スクリプト起源]]の[[スクリプト]]にアクセスできるようになります。
従って再帰的な[[関数]]呼び出しによって [[API]] の呼び出し元とみなすべき[[起源]]や[[実効スクリプト起源]]は変化することがあるのです。



* 現在設定群オブジェクト

[119] [DFN[[RUBYB[現在Realm記録]@en[current Realm Record]]]] 
([DFN[[RUBYB[現在Realm]@en[current Realm]]]]) [SRC[>>96]]
は現在実行中の[[関数オブジェクト]]の [F[Realm]] です。
[[JavaScript]] の[[著者]]の[[関数オブジェクト]]だけでなく、
[[プラットフォームオブジェクト]]でも定義されます。

[120] [DFN[[RUBYB[現在設定群オブジェクト]@en[current settings object]]]]は、[[現在Realm]]の[F[環境設定群オブジェクト]]です
[SRC[>>96]]。

[121] [DFN[[RUBYB[現在大域オブジェクト]@en[current global object]]]]は、[[現在Realm]]の[F[大域オブジェクト]]です
[SRC[>>96]]。

* 関連設定群オブジェクト

[122] [[大域オブジェクト]]の[DFN[[F[[RUBYB[[[関連設定群オブジェクト]]]@en[relevant settings object]]]]]]は、
その[[大域オブジェクト]]と同時に作られた対応する[[環境設定群オブジェクト]]です。
[SRC[>>96]]

[57] [[大域オブジェクト]]以外の[[プラットフォームオブジェクト]]の[DFN[[F[[RUBYB[[[関連設定群オブジェクト]]]@en[relevant settings object]]]]]]は、
当該[[オブジェクト]]に[F[関連付けられた大域環境]]の[F[大域オブジェクト]]の[F[環境設定群オブジェクト]]です
[SRC[>>96]]。

[124] [[プラットフォームオブジェクト]]の[DFN[[F[[RUBYB[[[関連大域オブジェクト]]]@en[relevant global object]]]]]]は、
その[F[関連設定群オブジェクト]]の[F[大域オブジェクト]]です [SRC[>>96]]。

[123] [[プラットフォームオブジェクト]]の[DFN[[F[[RUBYB[[[関連Realm]]]@en[relevant Realm]]]]]]は、
その[F[関連設定群オブジェクト]]の[F[Realm]]です [SRC[>>96]]。

[236] 
[[プラットフォームオブジェクト]]の[DFN[[F[[RUBYB[[RUBY[関連][かんれん]]エージェント][[[relevant agent]]]]]]]]は、
その[F[関連realm]]の[F[エージェント]]です。
[SRC[>>235]]


* 要求のクライアント

[195] [[要求]]は、[DFN[[F[[RUBYB[[[クライアント][要求クライアント]]]@en[client]]]]]]を持ちます。
値は [CODE[null]] または[[環境設定群オブジェクト]]です。
[SRC[>>192]]

[193] [[要求]]は、[DFN[[F[[RUBYB[[[予約クライアント]]]@en[reserved client]]]]]]を持ちます。
値は [CODE[null]]、[[環境]]、[[環境設定群オブジェクト]]のいずれかです。
既定値は [CODE[null]] です。 [SRC[>>192]]

;; [194] [[navigation request]] では[[環境]]、
[[worker request]] (非 [[service worker request]]) では[[環境設定群オブジェクト]]となり、
それ以外では使いません。 [SRC[>>192]]

[196] [[要求]]は[DFN[[F[[RUBYB[[[対象クライアントID]]]@en[target client id]]]]]]を持ちます。
値は[[文字列]]です。既定値は[[空文字列]]です。 [SRC[>>192]]

;; [197] [[navigation request]] でのみ使い、
[F[対象閲覧文脈]]の[F[活性文書]]の[F[環境設定群オブジェクト]]の[F[ID][環境設定群オブジェクト]]
に設定されます。 [SRC[>>192]]

-*-*-

[198] [[要求]]は、[DFN[[F[[RUBYB[[[窓][要求の窓]]]@en[window]]]]]]を持ちます。
値は [DFN[[CODE[no-window]]]]、
[DFN[[CODE[client][要求クライアント]]]]、
[[環境設定群オブジェクト]] ([F[大域オブジェクト]]が [CODE(DOMi)@en[Window]] のもの)
のいずれかです。既定値は [CODE[client][要求クライアント]] です。 [SRC[>>192]]

[199] [CODE[client][要求クライアント]] は[[仕様書]]の規定の便宜のため設けられたもので、
[[fetch]] 中に [CODE[no-window]] か[[要求]]の[F[クライアント][要求クライアント]]に変更されます。
[SRC[>>192]]

-*-*-

[189] [[要求]]の[F[参照元]]には、値として [CODE[client][要求クライアント]]
を指定できます。[F[参照元]]の[[既定値]]は [CODE[client][要求クライアント]] です。
[SRC[>>188]]

[190] [CODE[client][要求クライアント]] は、[[要求]]の[F[クライアント][要求クライアント]]から適当な[F[参照元]]の値を決定するべきことを表しています。

[191] [CODE[client][要求クライアント]] は、 [[fetch]] の処理中に
[CODE[no-referrer]] または [[URL]] に置き換わります。
[[fetch]] 呼び出し元の[[仕様書]]で[[参照元]]を明示せずとも [[fetch]]
側で適当な値で設定するために使われています。 [SRC[>>188]]

* サービスワーカークライアント

[205] [DFN[[RUBYB[サービスワーカークライアント]@en[service worker client]]]]は、
[[環境]]または[[環境設定群オブジェクト]]です [SRC[>>203]]。

;; [206] [[サービスワーカークライアント]]は、[[起源][環境設定群オブジェクトの起源]]を持ちます。

[207] [DFN[[RUBYB[[[窓クライアント]]]@en[window client]]]]は、
[[サービスワーカークライアント]]であって[F[大域オブジェクト]]が
[CODE(DOMi)@en[Window]] のものです。 [SRC[>>203]]

[208] [DFN[[RUBYB[[[専用ワーカークライアント]]]@en[dedicated worker client]]]]は、
[[サービスワーカークライアント]]であって[F[大域オブジェクト]]が
[CODE(DOMi)@en[DedicatedWorkerGlobalScope]] のものです。 [SRC[>>203]]

[210] [DFN[[RUBYB[[[共有ワーカークライアント]]]@en[shared worker client]]]]は、
[[サービスワーカークライアント]]であって[F[大域オブジェクト]]が
[CODE(DOMi)@en[SharedWorkerGlobalScope]] のものです。 [SRC[>>203]]

[211] [DFN[[RUBYB[[[ワーカークライアント]]]@en[worker client]]]]は、
[[専用ワーカークライアント]]または[[共有ワーカークライアント]]です。 [SRC[>>203]]

;; [212] [[サービスワーカークライアント]]だけ意味が違うことに注意。
[[サービスワーカー]]の[[ワーカークライアント]]ではありません。

-*-*-

[217] [CODE(DOMi)@en[ServiceWorkerContainer]] は、
[DFN[[F[[RUBYB[[[サービスワーカークライアント]]]@en[service worker client]]]]]]を持ちます
[SRC[>>216]]。 [CODE(DOMa)@en[navigator]] [[オブジェクト]]と
[CODE(DOMi)@en[ServiceWorkerContainer]] [[オブジェクト]]の作成時に値が決まります。

[219] [[ジョブ][サービスワーカージョブ]]は、
[DFN[[F[[RUBYB[[[クライアント]]]@en[client]]]]]]を持ちます
[SRC[>>218]]。初期値は [CODE[null]] です [SRC[>>218]]。

* 関連

[20] [[スクリプト]]はその構成要素として[[環境設定群オブジェクト]]を1つ持っています。
これを[[スクリプトの関連する設定群オブジェクト]]といいます。

[52] [[環境設定群オブジェクト]]と類する概念として他に[[クライアント]]、 [[Realm]]、
[[大域オブジェクト]]などがありますが、各仕様からはそれらよりも[[環境設定群オブジェクト]]を参照する方が良いとされています
[SRC[>>51]]。

;; [44] [[環境設定群オブジェクト]]、[[大域オブジェクト]]、[[Realm]]
には常に1:1:1対応関係があります。

* 歴史

** 現職設定群オブジェクト

[REFS[
- [136] [CITE@en[Web Applications 1.0 r7954 Try to clean up text where I referred to scripts that called a method, etc. Introduces the term 'incumbent script'.]]
( ([TIME[2013-06-12 06:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7953&to=7954>
- [137] [CITE@en[Web Applications 1.0 r8114     Try to clean up the incumbent script situation.]]
( ([TIME[2013-08-02 04:44:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8113&to=8114>
- [138] [CITE@en[Web Applications 1.0 r8129 Work in progress for integration with WebIDL (script execution stuff)]]
( ([TIME[2013-08-06 05:33:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8128&to=8129>
- [139] [CITE[IRC logs: freenode / #whatwg / 20130804]]
( ([TIME[2013-08-06 20:50:44 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130804>
- [140] [CITE@en[Web Applications 1.0 r8169     Maintain the stack of incumbent scripts across calls to showModalDialog(), but empty it while that call is running, since showModalDialog() can resume out of order (you can call window.close() on a 'parent' modal window). (Untested.)]]
( ([TIME[2013-09-04 05:43:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8168&to=8169>
- [141] [CITE[IRC logs: freenode / #whatwg / 20131107]]
( ([TIME[2013-11-09 12:27:06 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131107>
- [142] [CITE@en[Web Applications 1.0 r8247     The bulk of this is editorial: refactoring how scripts are defined so that all the common stuff is in a shared 'settings object' rather than being duplicated per script. But this also cleans up how postMessage() interacts with the event loop and a few other things I've since forgotten.]]
( ([TIME[2013-10-31 08:18:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8246&to=8247>
- [143] [CITE@en[Web Applications 1.0 r8262 Move the spec from a stack of incumbent scripts to a stack of script settings object. This should in theory have no concrete effects (though I may have changed some of the origin used for Web Workers started from document.domain-affected scripts that were called from other scripts with different original origins).]]
( ([TIME[2013-11-09 08:21:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8261&to=8262>
]REFS]

[144] 当初は[DFN[[RUBYB[[[現職スクリプト]]]@en[incumbent script]]]]が規定されていましたが、
[[スクリプト設定群オブジェクト]]が新設されて[[現職設定群オブジェクト]]へと置き換えられました。

[145] [CITE@en[Bug 18242 – Not clear what "script that invoked the method" means exactly in the case of e.g. a.setTimeout(b.postMessage, 0) // called from c]]
([TIME[2015-05-20 13:09:17 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=18242>

[146] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]]
([TIME[2015-12-22 23:22:40 +09:00]] 版)
<https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[147] [CITE@en[26603 – Consider merging the concept of incumbent global with the current realm]]
([TIME[2015-12-22 23:26:15 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26603>

[148] [CITE@en[26603 – Consider merging the concept of incumbent global with the current realm]]
([TIME[2015-12-22 23:39:52 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26603>

[149] [CITE@en[24403 – WebIDL callbacks should probably default to pushing a new entry settings object]]
( ([TIME[2016-06-03 17:57:35 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=24403>

[150] [CITE@en[26603 – Consider merging the concept of incumbent global with the current realm]]
( ([TIME[2016-06-16 12:34:37 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26603>

[151] [CITE@en[27204 – Provide guidance on entry vs incumbent settings objects]]
( ([TIME[2016-06-16 12:35:19 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27204>

[152] [CITE@en[Merge pull request #128 from domenic/prepare-callbacks]]
([[bzbarsky]]著, [TIME[2016-06-15 18:04:41 +09:00]])
<https://github.com/heycam/webidl/commit/91ad860e5d80ee03ed558ec7724a618fb42dc2f2>

**

[REFS[
- [246] [CITE@en[Web Applications 1.0 r7236     Recast how the origin handling is done for data: URLs in workers, and fix the shared worker origin handling for data: URLs so that you can actually reconnect to a data: shared worker.]]
( ([TIME[2012-08-10 03:29:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7235&to=7236>
- [282] [CITE@en[Web Applications 1.0 r8262 Move the spec from a stack of incumbent scripts to a stack of script settings object. This should in theory have no concrete effects (though I may have changed some of the origin used for Web Workers started from document.domain-affected scripts that were called from other scripts with different original origins).]]
( ([TIME[2013-11-09 08:21:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8261&to=8262>
- [1] [CITE@en[Web Applications 1.0 r8263 Prepare for WebIDL integration]]
( ([TIME[2013-11-12 03:10:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8262&to=8263>
- [2] [CITE@en[Web Applications 1.0 r8264 Some more tidying around script settings objects.]]
( ([TIME[2013-11-12 03:53:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8263&to=8264>
]REFS]

[46] [[スクリプトの起源]]は[[スクリプト設定群オブジェクト]]導入前は次のような規定でした。

[FIG[

[REFS[
- [135] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-02-22 20:11:59 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#origin>
- [248] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-11-16 20:26:18 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#worker-origin>
]REFS]

* 所有者により決まる場合

[164] [[スクリプト]]の[[起源]]は[DFN[[RUBYB[所有子]@en[owner]]]]の[[起源]]の[[別名]]であり、
[[実効スクリプト起源]]は[[所有子]]の[[実効スクリプト起源]]の[[別名]]です。
[[所有子]]は[[スクリプト]]の種類により次の通り定まります。 [SRC[>>135]]

:[CODE(HTMLe)@en[[[script]]]] [[要素]]:[CODE(HTMLe)@en[[[script]]]] [[要素]]の所属する [CODE(DOMi)@en[[[Document]]]]
[SRC[>>135]]
:[[事象取扱器内容属性]]:[[属性]]の所属する [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:他の[[スクリプト]]により作られた[[関数]]その他のコード参照:作った[[スクリプト]] [SRC[>>135]]
:[[HTTP]] [[リダイレクト]] (や[[他のプロトコルで等価なもの]]) により返された [CODE(URI)@en[[[javascript]]]] [[URL]]:
[CODE(URI)@en[[[javascript:]]]] [[URL]] に[[リダイレクト]]した [[URL]] [SRC[>>135]]
:[[属性]]にあった [CODE(URI)@en[[[javascript]]]] [[URL]]:
[[属性]]の所属する [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:[[スタイル・シート]]にあった [CODE(URI)@en[[[javascript]]]] [[URL]]:[[スタイル・シート]]の [[URL]] [SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[利用者]]によって提供されたもの (例えば[[ブックマークレット]]):
[[閲覧文脈]]の[[活性文書]]の [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[マーク付け]]によって提供されたもの:
[[URL]] を宣言している[[要素]] (例えば [CODE(HTMLe)@en[[[a]]]] [[要素]]) の [CODE(DOMi)@en[[[Document]]]]
[SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[スクリプト]]によって提供されたもの:
[[URL]] を提供した[[スクリプト]] [SRC[>>135]]

* その他のものから決まる場合

[223] その他の場合、[[スクリプト]]の[[起源]]・[[実効スクリプト起源]]は次に示すように定まります。

:[[ワーカー]]で走っている[[スクリプト]]:[[ワーカー]]の [CODE(JS)@en[[[location]]]]
[[属性]]の[[絶対URL]]の[[起源]]
(通常はその [[URL]] 自体から決まる[[起源]]・[[実効スクリプト起源]]であるが、
[CODE(URI)@en[[[data]]]] [[URL]] が[[構築子]]に指定されて作られた[[ワーカー]]ではその
[[entry script]] の[[起源]]・[[実効スクリプト起源]]と同じ値となる (>>243)。) [SRC[>>131]]

* ワーカー起源

[249] [DFN[[RUBYB[ワーカー起源]@en[worker origin]]]]は、 [CODE(DOMi)@en[[[WorkerGlobalScope]]]]
[[オブジェクト]]が作られるときに決まる[[起源]]です。 [SRC[>>248]]
[[エントリー・スクリプト]]の[[起源]]だったり、 [CODE(DOMi)@en[[[SharedWorker]]]]
[[構築子]]の引数として指定された [[URL]] の[[起源]]だったりします。
>>246 で導入されました。
]FIG]

[42] [CITE[IRC logs: freenode / #whatwg / 20140416]]
( ([TIME[2014-04-17 16:38:42 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140416>

[283] [CITE[IRC logs: freenode / #whatwg / 20141013]]
( ([TIME[2014-10-18 02:52:30 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20141013#l-519>

** 改称

[48] 2014年10月に[[スクリプト設定群オブジェクト]]から[[環境設定群オブジェクト]]に改称されました
[SRC[>>47]]。

[REFS[
- [51] [CITE@en[Bug 26836 – Extend script settings objects to be environment settings objects for use by fetch et al]] ([TIME[2014-10-23 02:47:17 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=26836>
- [47] [CITE@en[Web Applications 1.0 r8834 Rename script settings objects to environment settings objects to make reuse saner.]] ([TIME[2014-10-11 08:43:00 +09:00]] 版) <https://html5.org/r/8834>
- [284] [CITE@en[Make client refer to an environment settings object rather than a JavaSc... · 88b1117 · whatwg/fetch]]
( ([TIME[2014-10-18 14:21:51 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/88b11177f158406479284ae3412c5fa34d184440>
- [285] [CITE@en[MIX: Drop "JavaScript Global Environment". · 5d32821 · w3c/webappsec]]
( ([TIME[2014-10-21 09:48:40 +09:00]] 版))
<https://github.com/w3c/webappsec/commit/5d32821b21f3cb06a651c966f729b3044292a08a>
]REFS]

** 

[REFS[
- [53] [CITE@en[Web Applications 1.0 r8853  Drop the 'responsible document' concept. This also changes the referrer to use when launching a nested worker to be the URL of the outer worker instead of the URL of the outer Document, which made no sense really.]] ([TIME[2014-11-20 08:35:00 +09:00]] 版) <https://html5.org/r/8853>
]REFS]

[286] [CITE@en[Service workers, dedicated workers, and the environment settings object]]
( ([[Anne van Kesteren]] 著, [TIME[2014-10-24 20:09:56 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webappsec/2014Oct/0120.html>

[287] [CITE@en[Service workers, dedicated workers, and the environment settings object]]
( ([[Anne van Kesteren]] 著, [TIME[2014-10-24 20:09:56 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webappsec/2014Oct/0120.html>

[288] [CITE@en[MIX: Convert checks to environment settings objects. · d065309 · w3c/webappsec]]
( ([TIME[2014-10-30 03:03:36 +09:00]] 版))
<https://github.com/w3c/webappsec/commit/d06530978dafbd99881ca74f93ed67d720b161da>

[289] [CITE@en[Web Applications 1.0 r8860 Used the wrong variable in the worker's environment settings objects]]
( ([TIME[2014-11-27 07:18:00 +09:00]] 版))
<https://html5.org/r/8860>

[63] [CITE@en[Close #123: add creation URL to environment settings objects · whatwg/html@9d4276a]] ([TIME[2015-09-10 23:40:27 +09:00]] 版) <https://github.com/whatwg/html/commit/9d4276a62d0191b98f6bceaf9e0451e478ae8b47>

[64] [CITE@en[SECURE: Use the new 'creation URL' concept to resolve some issues. · w3c/webappsec@43adcd0]] ([TIME[2015-09-10 23:42:29 +09:00]] 版) <https://github.com/w3c/webappsec/commit/43adcd079327dd0258f5f250538bffca8579a7df>

[66] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 19:44:33 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[67] [CITE@en[Add 'HTTPS state' to settings objects · whatwg/html@6de5241]] ([TIME[2015-09-30 00:03:32 +09:00]] 版) <https://github.com/whatwg/html/commit/6de524157fcf341e10efb3eec634bcf7325e6ee4>

[68] [CITE@en[Environment settings objects vs global objects]]
([[Anne van Kesteren]] 著, [TIME[2015-09-22 02:15:26 +09:00]] 版)
<https://lists.w3.org/Archives/Public/www-archive/2015Sep/0020.html>

[28] [CITE@en[Move 'HTTPS state' from Window to Document · whatwg/html@68390ce]] ([TIME[2015-11-06 23:34:31 +09:00]] 版) <https://github.com/whatwg/html/commit/68390cea99f9f19881a16e1c8adaf1b130b4d1cc>

**

[109] [CITE[Issue 360891 - chromium - Javascript run via V8 Microtask callback has no "entered" DOM Window - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2014-04-10 04:51:48 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=360891>

[110] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]]
([TIME[2015-12-22 23:16:26 +09:00]] 版)
<https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[111] [CITE@en[Formalize '''[''''''['''Realm''']'''''']''' internal slot of ordinary objects · Issue #573 · tc39/ecma262]]
( ([TIME[2016-06-07 10:24:30 +09:00]]))
<https://github.com/tc39/ecma262/issues/573>

[112] [CITE@en[27203 – Evaluate entry settings object usage]]
( ([TIME[2016-06-16 12:34:59 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27203>

[113] [CITE@en[27204 – Provide guidance on entry vs incumbent settings objects]]
( ([TIME[2016-06-16 12:35:24 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27204>

** 

[72] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]]
([TIME[2015-12-22 20:48:06 +09:00]] 版)
<https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[37] [CITE@en[Initialize a window variable before using it · whatwg/html@862c8b1]]
([TIME[2016-01-21 12:11:05 +09:00]] 版)
<https://github.com/whatwg/html/commit/862c8b1bff2a62c0eb471ff636676a044eeef6ec>

[55] [CITE@en[Add <script type="module"> and module resolution/fetching/evaluation · whatwg/html@cd1a9fb]]
([TIME[2016-01-21 22:24:18 +09:00]] 版)
<https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4>

[56] [CITE@en[Fix #47: not all settings objects have a responsible document anymore · whatwg/xhr@cc15c94]]
([TIME[2016-01-22 23:26:53 +09:00]] 版)
<https://github.com/whatwg/xhr/commit/cc15c9443f774264cb32d33a13be3a8b58314867>

[58] [CITE@en[Define "relevant settings object" for any platform object · whatwg/html@25eaf88]] ([TIME[2016-01-28 23:42:51 +09:00]] 版) <https://github.com/whatwg/html/commit/25eaf8811be45dd40f961e7a5f111a4ad1e8fcee>

[43] [CITE@en[Clarify settings object, realm, and global relationships · whatwg/html@0866f1b]]
([TIME[2016-03-27 23:11:18 +09:00]] 版)
<https://github.com/whatwg/html/commit/0866f1b3f4b4ea5a99a30909e9bbe557dea0b460>

[77] [CITE@en[Move module map to Document/WorkerGlobalScope · whatwg/html@9a889fe]]
([TIME[2016-03-28 21:52:15 +09:00]] 版)
<https://github.com/whatwg/html/commit/9a889fee2ecb106974fb48fa50491edd77047954>

[79] [CITE@en[27143 – There's no reason to set a "responsible browsing context" since it is never used. Not having it for ''''''[''''''...'''''']'''''']]
([TIME[2016-03-29 11:20:29 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27143>

[80] [CITE@en[Merge effective script origin into origin · whatwg/html@8a843f2]]
([TIME[2016-03-31 16:49:45 +09:00]] 版)
<https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>

[32] [CITE@en[Integrate with the Referrer Policy spec, part 2 of n]]
( ([[domenic]]著, [TIME[2016-05-18 01:52:35 +09:00]]))
<https://github.com/whatwg/html/commit/176e74243c649b709b9959b7d08b327290c2f403>

[81] [CITE@en[Integrate with HTML, part 2 of n (#49)]]
( ([[domenic]]著, [TIME[2016-05-21 02:48:12 +09:00]]))
<https://github.com/w3c/webappsec-referrer-policy/commit/df68c16003b7f89bbaafe44d8756720889f9d64a>

[82] [CITE@en[25300 – WebIDL needs to be updated to new terminology around script settings objects]]
( ([TIME[2016-06-03 18:04:30 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=25300>

[83] [CITE@en['''['''worklets''']''' First pass of fixing import for worklets. by bfgeek · Pull Request #251 · w3c/css-houdini-drafts]]
([TIME[2016-07-04 23:53:07 +09:00]])
<https://github.com/w3c/css-houdini-drafts/pull/251>

[84] [CITE@en[s/incumbent/current/ settings object. Closes w3c/webappsec-secure-con…]]
([[mikewest]]著, [TIME[2016-07-04 18:09:23 +09:00]])
<https://github.com/w3c/webappsec-secure-contexts/commit/d153c48422ef5d94e902d1f73fadd72ff10761b6>

[85] [CITE@en[Use current instead of incumbent + entry in worker constructors]]
([[domenic]]著, [TIME[2016-07-07 01:46:49 +09:00]])
<https://github.com/whatwg/html/commit/485c76a84611d094839b3b60d13e6e997594800b>

[86] [CITE@en[Use the Window's associated Document for allow-modals sandbox checks]]
([[domenic]]著, [TIME[2016-07-14 06:37:56 +09:00]])
<https://github.com/whatwg/html/commit/29ebd5b6e8c4ba4006115a784c5c6c87dc151489>

[87] [CITE@en[Use current settings object in content document definition]]
([[domenic]]著, [TIME[2016-07-13 08:08:54 +09:00]])
<https://github.com/whatwg/html/commit/a6a1b714d2b3288fbf88528ac9182f9263b92bc8>

[88] [CITE@en[Use relevant settings object in protocol handlers]]
([[domenic]]著, [TIME[2016-07-13 07:13:28 +09:00]])
<https://github.com/whatwg/html/commit/413c1ccc43c9b16ff5c73585092f8721dea305c7>

[89] [CITE@en[Use the associated document for pushState/replaceState's origin check]]
([[domenic]]著, [TIME[2016-07-13 06:50:14 +09:00]])
<https://github.com/whatwg/html/commit/60f84adcae2d252fc63afa6b65686a4590d28734>

[90] [CITE@en[Use the associated document for pushState/replaceState's origin check]]
([[domenic]]著, [TIME[2016-07-13 06:50:14 +09:00]])
<https://github.com/whatwg/html/commit/60f84adcae2d252fc63afa6b65686a4590d28734>

[91] [CITE@en[Use "current settings object" in the frameElement origin check]]
([[domenic]]著, [TIME[2016-07-13 06:34:08 +09:00]])
<https://github.com/whatwg/html/commit/921499fbc6d84424ebf569fe58ad82dabc9b59a0>

[92] [CITE@en[Link to CSP3, minor cleanup of settings/global object references.]]
([[mikewest]]著, [TIME[2016-07-20 15:57:11 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/416eb026dc24f6dadb4daf77eeb90c6fd8b7266a>

[93] [CITE@en[Use only the incumbent global in postMessage]]
([[domenic]]著, [TIME[2016-07-20 22:41:29 +09:00]])
<https://github.com/whatwg/html/commit/8259a69aab7538b772beebad1ff69dca44b159ab>

[94] [CITE@en[Add a new section detailing the various potential realms]]
([[domenic]]著, [TIME[2016-05-03 06:09:12 +09:00]])
<https://github.com/whatwg/html/commit/6399af334edd6000bd394685923df5f0519194ab>

[95] [CITE@en[Fix incumbent settings object definition and add examples]]
([[domenic]]著, [TIME[2016-06-15 17:49:40 +09:00]])
<https://github.com/whatwg/html/commit/f97c3e478654114bd4c9cc8587418a5519f9eb09>

[166] [CITE@en[Stop usage of entry settings object]]
([[annevk]]著, [TIME[2016-08-11 21:53:49 +09:00]])
<https://github.com/whatwg/fetch/commit/24db2d37e4d952343ce5319a1684cbd0319e144e>

[167] [CITE@en[Set referrer policy better for <iframe srcdoc> documents]]
([[domenic]]著, [TIME[2016-08-12 06:23:46 +09:00]])
<https://github.com/whatwg/html/commit/5d7c532fc9aa275bd3b12d469b9841c0bad4f50d>

[172] [CITE@en[Update advice to favor the relevant realm over the current one]]
([[domenic]]著, [TIME[2016-08-25 15:58:14 +09:00]])
<https://github.com/whatwg/html/commit/488e201ebf67ab0246eecdc711edc1188e2eef5a>

[176] [CITE@en[Convert usages to current settings object]]
([[mark a. foltz]]著, [TIME[2016-09-30 06:56:20 +09:00]])
<https://github.com/w3c/presentation-api/commit/8858a12c048ea5967c527e1eacefabb64293a2eb>

[177] [CITE@en[Revert "Convert usages to current settings object"]]
([[mark a. foltz]]著, [TIME[2016-09-30 07:12:40 +09:00]])
<https://github.com/w3c/presentation-api/commit/c430cf78e610931fb10623671dafc918f7096e05>

[178] [CITE@en[Use current settings object in steps that require a settings object. by mfoltzgoogle · Pull Request #357 · w3c/presentation-api]]
([TIME[2016-10-01 11:56:54 +09:00]])
<https://github.com/w3c/presentation-api/pull/357>

[179] [CITE@en[Define how data URLs affect workers]]
([[annevk]]著, [TIME[2016-09-15 19:34:58 +09:00]])
<https://github.com/whatwg/html/commit/c592f62985ab9aa0e26c111a9823de5101d58c96>

[180] [CITE@en[Improve navigate for service worker hooks]]
([[jungkees]]著, [TIME[2016-10-24 20:32:35 +09:00]])
<https://github.com/whatwg/html/commit/2b93f9ec35b152e58d3e181bea8c45d789bac949>

[183] [CITE@en[Add environment's execution ready flag]]
([[jungkees]]著, [TIME[2016-11-09 19:26:26 +09:00]])
<https://github.com/whatwg/html/commit/d358c7814de8a053dcb8615a5d87e8c2e0e19257>

[184] [CITE@en[Use current global object for ServiceWorkerGlobalScope check]]
([[annevk]]著, [TIME[2016-11-21 22:12:07 +09:00]])
<https://github.com/whatwg/notifications/commit/434ccaf63410f5fe71e7dd75a69bb9dee953079b>

[185] [CITE@en[Honor srcdoc document referrer policies when set]]
([[estark37]]著, [TIME[2016-11-24 05:58:33 +09:00]])
<https://github.com/whatwg/html/commit/3147414111d134ecd844d9796aa6fc7c1979c98b>

[186] [CITE@en[Editorial: convert to Bikeshed]]
([[annevk]]著, [TIME[2016-11-08 23:56:26 +09:00]])
<https://github.com/whatwg/xhr/commit/83a4d706c12c219392c015b5c48ca55847af7056>

[187] [CITE@en[Stop using incumbent settings object (#67)]]
([[domenic]]著, [TIME[2017-02-10 04:41:14 +09:00]])
<https://github.com/w3c/FileAPI/commit/1a6f054ec9ade529863b7852e272c3c39710b867>

[213] [CITE@en[Fix event callback invocation to set entry/incumbent correctly]]
([[domenic]]著, [TIME[2017-02-25 07:27:07 +09:00]])
<https://github.com/whatwg/html/commit/037f35d4a114d5543d5caa17689cbe1b095790cf>

[220] [CITE@en['''['''worklets''']''' Fixes the setup of the inside setttings object for worklet…]]
([[bfgeek]]著, [TIME[2017-04-13 11:33:05 +09:00]])
<https://github.com/w3c/css-houdini-drafts/commit/7481964e1d2e9dfc3b241d9c6a58bf478bae6f88>

[221] [CITE@en[Simplify the definition of the "entry" concept]]
([[domenic]]著, [TIME[2017-04-18 22:49:58 +09:00]])
<https://github.com/whatwg/html/commit/36d771a0c90c3534fe0d4c6a23ca240979b94dfd>

[224] [CITE@en[Editorial: clarify the type of creation URL]]
([[jungkees]]著, [TIME[2017-05-10 20:23:34 +09:00]])
<https://github.com/whatwg/html/commit/064b2f27128e222fcd33ab85d199a450a877ad20>

[225] [CITE@en[Editorial: rename browsing context environment settings object]]
([[annevk]]著, [TIME[2017-05-10 20:11:34 +09:00]])
<https://github.com/whatwg/html/commit/3d38e20331de04af0d82e2a758d79d6fe51d596a>

[226] [CITE@en[Fix #253: Stop using incumbent settings object]]
([[anssiko]]著, [TIME[2017-08-24 17:11:51 +09:00]])
<https://github.com/w3c/sensors/commit/f15d394bd203747b931e884a54a4b889641d34de>

[227] [CITE@en[Stop using "incumbent settings object"? · Issue #253 · w3c/sensors]]
([TIME[2017-08-25 10:31:38 +09:00]])
<https://github.com/w3c/sensors/issues/253>

[228] [CITE@en[Fix #253: Stop using incumbent settings object by anssiko · Pull Request #258 · w3c/sensors]]
([TIME[2017-08-25 10:31:51 +09:00]])
<https://github.com/w3c/sensors/pull/258>

[229] [CITE@en[Remove the blanket restriction against nested usage. (#114)]]
([[mikewest]]著, [TIME[2017-11-16 18:23:34 +09:00]])
<https://github.com/w3c/webappsec-credential-management/commit/c3c4a919defe3a96691049de5ad508c7d5cf45e8>

[230] [CITE@en[Use the API URL character encoding for XMLHttpRequest]]
([[annevk]]著, [TIME[2017-12-04 22:18:29 +09:00]])
<https://github.com/whatwg/xhr/commit/6f14c60f5ae81381c12ff50f5f6898a1583b570d>

[233] [CITE@en[Discard the environment after a failed navigation or worker start. by mattto · Pull Request #3723 · whatwg/html]]
([TIME[2018-06-08 17:49:22 +09:00]])
<https://github.com/whatwg/html/pull/3723>

[234] [CITE@en[Clients.get: block on reserved clients. by mattto · Pull Request #1315 · w3c/ServiceWorker]]
([TIME[2018-06-08 17:50:21 +09:00]])
<https://github.com/w3c/ServiceWorker/pull/1315>

[237] [CITE@en[Editorial: clarify responsible browsing context]]
([[annevk]], [TIME[2019-02-27 00:29:53 +09:00]], [TIME[2021-07-02T11:49:06.000Z]])
<https://github.com/whatwg/html/commit/f262b1961c017769e03f3113eeead89a81ccdf9e>

[238] [CITE@en[What happens to the responsible browsing context of a settings object when the browsing context is discarded? · Issue #3846 · whatwg/html]]
([TIME[2021-07-02T11:50:00.000Z]])
<https://github.com/whatwg/html/issues/3846>

[239] [CITE@en[Editorial: clarify responsible browsing context by annevk · Pull Request #4393 · whatwg/html]]
([TIME[2021-07-02T11:50:29.000Z]])
<https://github.com/whatwg/html/pull/4393>

[240] [CITE@en[Responsible browsing context of an environment settings object seems fishy · Issue #1580 · whatwg/html]]
([TIME[2021-07-02T11:50:46.000Z]])
<https://github.com/whatwg/html/issues/1580>

[241] [CITE@en[Editorial: nested browsing context is a member, not a type]]
([[annevk]], [TIME[2019-11-27 02:46:03 +09:00]], [TIME[2022-01-18T09:37:22.000Z]])
<https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4>