/* * Copyright (c) 2025, Aliaksandr Kalenik * Copyright (c) 2026, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::ServiceWorker { struct MultiCacheQueryOptions : public CacheQueryOptions { Optional cache_name; }; // https://w3c.github.io/ServiceWorker/#cachestorage-interface class CacheStorage : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(CacheStorage, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(CacheStorage); public: GC::Ref match(Fetch::RequestInfo, MultiCacheQueryOptions); GC::Ref has(String const& cache_name); GC::Ref open(String const& cache_name); GC::Ref delete_(String const& cache_name); GC::Ref keys(); private: explicit CacheStorage(JS::Realm&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Visitor&) override; NameToCacheMap& relevant_name_to_cache_map(); NameToCacheMap m_relevant_name_to_cache_map; }; }