LibWeb: Correctly initialize Storage objects on the Document

Instead of storing all storage objects in static memory, we now
follow the the spec by lazily creating a unique Storage object
on each document object.

Each Storage object now holds a 'proxy' to the underlying backing
storage. For now, this proxy is simply a reference to the backing
object. In the future, it will need to be some type of interface
object that stores on a SQLite database or similar.

Session storage is now correctly stored / tracked as part of the
TraversableNavigable object.

Local storage is still stored in a static map, but eventually this
should be factored into something that is stored at the user agent
level.
This commit is contained in:
Shannon Booth 2024-12-26 11:56:03 +13:00 committed by Andreas Kling
commit 2066ed2318
Notes: github-actions[bot] 2025-01-02 10:39:14 +00:00
20 changed files with 503 additions and 44 deletions

View file

@ -752,6 +752,12 @@ struct UnderlyingSource;
namespace Web::StorageAPI {
class NavigatorStorage;
class StorageManager;
class StorageShed;
struct StorageBottle;
struct StorageBucket;
struct StorageEndpoint;
struct StorageShelf;
}
namespace Web::SVG {