存储面板架构

Actor 结构

这是正在实现以支持 Fission 的新架构。它目前用于检查选项卡。

Class structure architecture (resource-based)

  • 我们不再拥有全局的 Storage actor。

  • 每种存储类型的特定 actor 由监视器代替生成。

  • 每个 actor 现在拥有的全局 Storage actor 的引用现在指向一个模拟对象。

  • 一些监视器需要在父进程中运行,而其他监视器可以在内容进程中运行。

    • 父进程:Cookie、IndexedDB、Web 扩展。

    • 内容进程:LocalStorage、SessionStorage、缓存。

流程

需要牢记的一些事项

  • 在存储面板中,**资源是前端**。

  • 这些前端包含一个 hosts 对象,该对象填充了主机名及其包含的实际存储数据。

  • 在客户端,我们作为 ResourceCommand.watchResourcesonAvailable 回调的一部分获取它。

    • 内容进程存储类型:每个目标一个,多个资源。

    • 父进程存储类型:单个资源。

初始加载

网页加载,打开工具箱。稍后,我们将看到如果添加新的远程目标(例如,创建指向不同主机的 iframe)会发生什么。

Fission 关闭

Initial load diagram, fission off

  • 我们将所有存储前端作为新的资源发送到 watchResourcesonAvailable 回调中。

  • 添加远程目标后,我们将新的添加作为 "single-store-update" 事件获取。

Fission 打开

Initial load diagram, fission on

与之前的场景(Fission 关闭)类似,但现在添加新的远程目标时

  • 我们会在新的 onAvailable 回调中获取内容进程存储资源,而不是 "single-store-update"

  • 父进程存储资源继续使用 "single-store-update" 方法。这可以通过它们的 StorageMock actor 在 "window-global-created" 后发出伪造的 "window-ready" 事件来实现。

CRUD 操作