[6] [[大域オブジェクト]]の [DFN[[[Blob URL Store]]]] は、作成した [[Blob URL]]
と [CODE(DOMi)@en[[[Blob]]]] との関連付けを保持するものです。

* 仕様書

[REFS[
- [1] '''[CITE[File API]] ([TIME[2015-04-17 16:25:21 +09:00]] 版) <https://w3c.github.io/FileAPI/#BlobURLStore>'''
- [15] [CITE@en[Media Source Extensions™]] ([TIME[2016-11-17 04:05:37 +09:00]]) <https://w3c.github.io/media-source/#mediasource-object-url>
]REFS]

* 文脈

[2] [CODE(DOMm)@en[[[createObjectURL]]]] [DEL[や [CODE(DOMm)@en[createFor]]]]
を[[晒す]][[大域オブジェクト]]は、 [[Blob URL Store]]
を保持しなければ[['''なりません''']]。 [SRC[>>1]]

* 構造

[7] [[Blob URL Store]] は、 [[Blob URL]] と [CODE(DOMi)@en[Blob]] [SRC[>>1]]
または [CODE(DOMi)@en[MediaSource]] [SRC[>>15]]
の組のリストです。 [SRC[>>1]]

;; [8] [CODE(DOMi)@en[[[Blob]]]] への[[参照]]があるため、 [CODE(DOMi)@en[[[Blob]]]]
は [[Blob URL]] が有効な限り、[[ごみ収集]]されません。

* 演算

[3] [DFN[[RUBYB[[[Blob URL Store]] に項目を追加]@en[add an entry to the Blob URL Store]]]]するとは、
指定された [[Blob URL]] と [CODE(DOMi)@en[[[Blob]]]] の組を [[Blob URL Store]]
に追加することをいいます。 [SRC[>>1]]

[4] [DFN[[RUBYB[[[Blob URL Store]] の項目を削除]@en[remove an entry from the Blob URL Store]]]]するとは、
指定された [[Blob URL]] とそれに対応する [CODE(DOMi)@en[[[Blob]]]] の組を [[Blob URL Store]]
から削除することをいいます。 [SRC[>>1]]

[HISTORY[
[9] [[大域スクリプト片付けジョブ]]は、
[[Revocation List]] 中のすべての [[Blob URL]] について、
[[Blob URL Store]] からの削除を実行しなければ[['''なりません''']] [SRC[>>1]]。

[10] [[Revocation List]] 中の [[Blob URL]] すべてが [[Blob URL Store]]
から削除された時は、 [[Revocation List]] 中の [[Blob URL]] をすべて削除しなければ[['''なりません''']] [SRC[>>1]]。
]HISTORY]

[11] [[unloading document cleanup step]] において、
[[Blob URL Store]] 中のすべての [[Blob URL]] を [[Blob URL Store]]
から削除しなければ[['''なりません''']] [SRC[>>1]]。

;; [12] [[ワーカー]]の場合、 [[Blob URL Store]] 内の [[Blob URL]]
が明示的に破棄されることはないようです。しかし[[ワーカー]]自体が破棄される時に
[[Blob URL Store]] も破棄されると解釈するのが自然でしょう。

* 関連

[5] [[Revocation List]] も参照。

* 歴史

[16] [[File API]] で導入されました。

[17] [[MSE]] が[[猿パッチ]]を当てています。

* メモ

[13] [[Blob URL Store]] は[[大域オブジェクト]]ごとにありますから、 [[Blob URL]]
を他の[[大域オブジェクト]]が使われる環境に送っても、意味がありません。

[EG[
[14] 例えば [CODE(HTMLe)@en[[[iframe]]]] 内の [CODE(HTMLe)@en[[[img]]]] の
[[URL]] として使うことはできません。
]EG]

[18] [CITE@en[Refactor Blob URL Store definition. (#92)]]
([[mkruisselbrink]]著, [TIME[2018-01-10 04:11:42 +09:00]])
<https://github.com/w3c/FileAPI/commit/0fd8922f877b7701b9d364d9257c5d9d76971fae>

[19] [CITE@en[Clarify Lifetime of BlobStore · Issue #89 · w3c/FileAPI]]
([TIME[2018-01-10 23:07:03 +09:00]])
<https://github.com/w3c/FileAPI/issues/89>

[20] [CITE@en[Refactor Blob URL Store definition. by mkruisselbrink · Pull Request #92 · w3c/FileAPI]]
([TIME[2018-01-10 23:09:47 +09:00]])
<https://github.com/w3c/FileAPI/pull/92>