Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
An associated-interface-free DOM Storage
Removes the last usage of Mojo associated interfaces from DOM Storage code. Prior to this change, associated interfaces are used to synchronize Clone() operations on a StorageNamespace interface with arbitrary mutations on any StorageArea bound through that StorageNamespace. With the introduction of the Mojo async flushing API in r730829 we can enforce such synchronization without associated interfaces. This CL does that with a simple two-phase flush at clone time: - Flush all related StorageArea pipes immediately prior to Clone - Tell the StorageNamespace pipe to pause until said flushes complete - Call StorageNamespace.Clone() - Flush the StorageNamespace pipe immediately after Clone - Tell all related StorageArea pipes to pause until that flush completes This achieves the necessary ordering constraints for Session Storage cloning without requiring strict ordering among all StorageNamespace and StorageArea messages, consequently allowing StorageNamespace and StorageArea to use independent pipes connected to potentially different processes from each other. This satisfies a key requirement for migrating Session Storage to the Storage Service. Bug: 1000959 Change-Id: Ic1ccc2d6cbfa462733c53d2052d616655b49ed53 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036885 Commit-Queue: Ken Rockot <rockot@google.com> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Daniel Murphy <dmurph@chromium.org> Cr-Commit-Position: refs/heads/master@{#738439}
- Loading branch information