NetworkCacheEntry.h [plain text]
#ifndef NetworkCacheEntry_h
#define NetworkCacheEntry_h
#if ENABLE(NETWORK_CACHE)
#include "NetworkCacheStorage.h"
#include "ShareableResource.h"
#include <WebCore/ResourceRequest.h>
#include <WebCore/ResourceResponse.h>
#include <wtf/Noncopyable.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class SharedBuffer;
}
namespace WebKit {
namespace NetworkCache {
class Entry {
WTF_MAKE_FAST_ALLOCATED;
public:
Entry(const Key&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, const Vector<std::pair<String, String>>& varyingRequestHeaders);
Entry(const Key&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, const Vector<std::pair<String, String>>& varyingRequestHeaders);
explicit Entry(const Storage::Record&);
Entry(const Entry&);
Storage::Record encodeAsStorageRecord() const;
static std::unique_ptr<Entry> decodeStorageRecord(const Storage::Record&);
const Key& key() const { return m_key; }
std::chrono::system_clock::time_point timeStamp() const { return m_timeStamp; }
const WebCore::ResourceResponse& response() const { return m_response; }
const Vector<std::pair<String, String>>& varyingRequestHeaders() const { return m_varyingRequestHeaders; }
WebCore::SharedBuffer* buffer() const;
const WebCore::ResourceRequest* redirectRequest() const { return m_redirectRequest.get(); }
#if ENABLE(SHAREABLE_RESOURCE)
ShareableResource::Handle& shareableResourceHandle() const;
#endif
bool needsValidation() const;
void setNeedsValidation(bool);
const Storage::Record& sourceStorageRecord() const { return m_sourceStorageRecord; }
void asJSON(StringBuilder&, const Storage::RecordInfo&) const;
private:
void initializeBufferFromStorageRecord() const;
#if ENABLE(SHAREABLE_RESOURCE)
void initializeShareableResourceHandleFromStorageRecord() const;
#endif
Key m_key;
std::chrono::system_clock::time_point m_timeStamp;
WebCore::ResourceResponse m_response;
Vector<std::pair<String, String>> m_varyingRequestHeaders;
std::unique_ptr<WebCore::ResourceRequest> m_redirectRequest;
mutable RefPtr<WebCore::SharedBuffer> m_buffer;
#if ENABLE(SHAREABLE_RESOURCE)
mutable ShareableResource::Handle m_shareableResourceHandle;
#endif
Storage::Record m_sourceStorageRecord { };
};
}
}
#endif
#endif