存储面板架构¶
Actor 结构¶
这是正在实现以支持 Fission 的新架构。它目前用于检查选项卡。
我们不再拥有全局的
Storage
actor。每种存储类型的特定 actor 由监视器代替生成。
每个 actor 现在拥有的全局
Storage
actor 的引用现在指向一个模拟对象。一些监视器需要在父进程中运行,而其他监视器可以在内容进程中运行。
父进程:Cookie、IndexedDB、Web 扩展。
内容进程:LocalStorage、SessionStorage、缓存。
流程¶
需要牢记的一些事项
在存储面板中,**资源是前端**。
这些前端包含一个
hosts
对象,该对象填充了主机名及其包含的实际存储数据。在客户端,我们作为
ResourceCommand.watchResources
的onAvailable
回调的一部分获取它。内容进程存储类型:每个目标一个,多个资源。
父进程存储类型:单个资源。
初始加载¶
网页加载,打开工具箱。稍后,我们将看到如果添加新的远程目标(例如,创建指向不同主机的 iframe)会发生什么。
Fission 关闭¶
我们将所有存储前端作为新的资源发送到
watchResources
的onAvailable
回调中。添加远程目标后,我们将新的添加作为
"single-store-update"
事件获取。
Fission 打开¶
与之前的场景(Fission 关闭)类似,但现在添加新的远程目标时
我们会在新的
onAvailable
回调中获取内容进程存储资源,而不是"single-store-update"
。父进程存储资源继续使用
"single-store-update"
方法。这可以通过它们的StorageMock
actor 在"window-global-created"
后发出伪造的"window-ready"
事件来实现。