CacheStorageConnection.h [plain text]
#pragma once
#include "DOMCacheEngine.h"
#include "RetrieveRecordsOptions.h"
#include <wtf/HashMap.h>
#include <wtf/ThreadSafeRefCounted.h>
namespace WebCore {
struct ClientOrigin;
class FetchResponse;
class CacheStorageConnection : public ThreadSafeRefCounted<CacheStorageConnection> {
public:
virtual ~CacheStorageConnection() = default;
virtual void open(const ClientOrigin&, const String& cacheName, DOMCacheEngine::CacheIdentifierCallback&&) = 0;
virtual void remove(uint64_t cacheIdentifier, DOMCacheEngine::CacheIdentifierCallback&&) = 0;
virtual void retrieveCaches(const ClientOrigin&, uint64_t updateCounter, DOMCacheEngine::CacheInfosCallback&&) = 0;
virtual void retrieveRecords(uint64_t cacheIdentifier, const RetrieveRecordsOptions&, DOMCacheEngine::RecordsCallback&&) = 0;
virtual void batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest&, CacheQueryOptions&&, DOMCacheEngine::RecordIdentifiersCallback&&) = 0;
virtual void batchPutOperation(uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&, DOMCacheEngine::RecordIdentifiersCallback&&) = 0;
virtual void reference(uint64_t ) = 0;
virtual void dereference(uint64_t ) = 0;
uint64_t computeRecordBodySize(const FetchResponse&, const DOMCacheEngine::ResponseBody&);
virtual void clearMemoryRepresentation(const ClientOrigin&, DOMCacheEngine::CompletionCallback&& callback) { callback(DOMCacheEngine::Error::NotImplemented); }
virtual void engineRepresentation(CompletionHandler<void(const String&)>&& callback) { callback(String { }); }
virtual void updateQuotaBasedOnSpaceUsage(const ClientOrigin&) { }
private:
uint64_t computeRealBodySize(const DOMCacheEngine::ResponseBody&);
protected:
HashMap<uint64_t, uint64_t> m_opaqueResponseToSizeWithPaddingMap;
};
}