discard a document

文書を捨てる

仕様書

文書を捨てる

[7] 閲覧文脈文書を捨てる (discard a Document) 際は、 文書について次のようにしなければなりません >>1

  1. [28] 文書salvageable を、に設定します。
  2. [29] 文書unloading document cleanup steps を実行します。
  3. [30] 文書のabortを実行します。
  4. [31] 文書閲覧文脈イベントループについて文書のタスクを削除します。
  5. [32] 文書子供閲覧文脈の各閲覧文脈について、
    1. [34] 閲覧文脈を捨てる処理を実行します。
  6. [35] 文書閲覧文脈から文書への強い参照を破棄します。
  7. [36] WorkerGlobalScope のうち、 所有者集合文書含まれるものについて、 所有者集合から文書削除します。

[37] 子供閲覧文脈の順序は仕様書に明記されていませんが、 影響は無いのでしょうか。 unload の順序に影響しますから、 文書順か何かになっている必要がありそうですが。。。

[9] 文書を捨てる処理は、閲覧文脈を捨てる処理から呼び出されることがあります。

[13] 文書を捨てる処理は、unload a document から呼び出されることがあります。

[10] 文書を捨てる処理は、セッション履歴現在エントリーではなく、 スクリプトからも参照されていない文書について、いつでも呼び出すことができます。

bfcache 参照。
[14] 文書を捨てる処理が unload a document から呼び出される場合は、 文書レンダリング中かもしれません。それ以外の場合はレンダリング中ではありません。

unloading document cleanup steps

[4] 文書unloading document cleanup steps とは、次のものです。

  1. [16] を、文書Windowに設定します。
  2. [19] WebSocketが空でなければ、
    1. [17] WebSocketの各オブジェクトについて、
      1. [18] オブジェクトmake disappear を実行します >>3
    2. [20] 文書salvageableを、に設定します >>3
    3. [26] WebSocketを、空にします。
  3. [21] 文書salvageableなら、
    1. [22] EventSourceの各オブジェクトについて、
      1. [23] オブジェクトforcibly close を実行します >>3
    2. [27] EventSourceを、空にします。
    3. [24] 文書活性タイマーのリストを、空に設定します >>3
  4. [25] 文書WindowBlob URL StoreBlob URL をすべて削除します >>2
[6] WebRTCrequestIdleCallback でも同様の処理が必要でしょうか?

[5] 本手順群は、 unload a document文書を捨てるから呼び出されます。 unload a document文書を捨てるを通して計2回本手順群を呼び出すことがあります。

2回呼び出す場合には、その間で再帰的な unload a document の呼び出しがあるので、 そこで何かを破棄する必要が新たに生じているかもしれません。

歴史

[33] Bug 12837 – Define unloading document cleanup steps ( 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=12837>

[8] 12837 – Define unloading document cleanup steps () <https://www.w3.org/Bugs/Public/show_bug.cgi?id=12837>

[15] Clarify the unloading document cleanup steps (yuyokk著, ) <https://github.com/whatwg/html/commit/ef139a459c3c84458ff232f099128b583157d220>

[38] Editorial: restructure ownership of workers to parent-owners (annevk著, ) <https://github.com/whatwg/html/commit/59a4750f475acd789ee436b4906972ba2081d8b3>

[39] Editorial: move owner set manipulation into discarding a document (GloverDonovan著, ) <https://github.com/whatwg/html/commit/a5586f115e4c982c22b4d9d583a20b26236f5991>

[12] >>39 以前は所有者集合からの削除は別に規定されていました >>11ワーカーはメインの処理とは並列に動作していますから、 ワーカーの文書からの削除も文書を捨てる処理の他の手順とは非同期的に実行されるかもしれません。 (仕様書上で文書を捨てる処理の一部ではなく、ワーカーの章で別途規定されているのもそのためと考えられます。) どのみちワーカーの処理は並列に実行されていますから、 ワーカーの文書からの削除が同期的か非同期的かを著者が観測するのは困難 (不可能?) と思われます。

[40] Move owner set manipulation during document discarding · Issue #2533 · whatwg/html () <https://github.com/whatwg/html/issues/2533>

[41] Move owner set manipulation into discarding a document by GloverDonovan · Pull Request #3473 · whatwg/html () <https://github.com/whatwg/html/pull/3473>

[42] Editorial: modernize the style of various document-accepting algorithms (musgravejw著, ) <https://github.com/whatwg/html/commit/8bd6fb3972aab1debd2c562b31617e7d3da2377b>

[43] Various algorithms should take an explicit document argument · Issue #3638 · whatwg/html () <https://github.com/whatwg/html/issues/3638>

[44] Editorial: Add Document to argument list explicitly for document algorithms by musgravejw · Pull Request #3639 · whatwg/html () <https://github.com/whatwg/html/pull/3639>

[45] document.open() simplifications, part 1 (TimothyGu著, ) <https://github.com/whatwg/html/commit/6f769b8089a843066aa19f5991405bf4c84458b3>