StorageNamespaceImpl.h [plain text]
#ifndef WebStorageNamespaceImpl_h
#define WebStorageNamespaceImpl_h
#include <WebCore/SecurityOriginHash.h>
#include <WebCore/StorageArea.h>
#include <WebCore/StorageNamespace.h>
#include <wtf/HashMap.h>
namespace WebKit {
class StorageAreaMap;
class WebPage;
class StorageNamespaceImpl : public WebCore::StorageNamespace {
public:
static RefPtr<StorageNamespaceImpl> createSessionStorageNamespace(uint64_t identifier, unsigned quotaInBytes);
static RefPtr<StorageNamespaceImpl> createLocalStorageNamespace(uint64_t identifier, unsigned quotaInBytes);
static RefPtr<StorageNamespaceImpl> createTransientLocalStorageNamespace(uint64_t identifier, WebCore::SecurityOrigin& topLevelOrigin, uint64_t quotaInBytes);
virtual ~StorageNamespaceImpl();
WebCore::StorageType storageType() const { return m_storageType; }
uint64_t storageNamespaceID() const { return m_storageNamespaceID; }
WebCore::SecurityOrigin* topLevelOrigin() const { return m_topLevelOrigin.get(); }
unsigned quotaInBytes() const { return m_quotaInBytes; }
void didDestroyStorageAreaMap(StorageAreaMap&);
private:
explicit StorageNamespaceImpl(WebCore::StorageType, uint64_t storageNamespaceID, WebCore::SecurityOrigin* topLevelOrigin, unsigned quotaInBytes);
virtual PassRefPtr<WebCore::StorageArea> storageArea(PassRefPtr<WebCore::SecurityOrigin>) override;
virtual PassRefPtr<WebCore::StorageNamespace> copy(WebCore::Page*) override;
const WebCore::StorageType m_storageType;
const uint64_t m_storageNamespaceID;
const RefPtr<WebCore::SecurityOrigin> m_topLevelOrigin;
const unsigned m_quotaInBytes;
HashMap<RefPtr<WebCore::SecurityOrigin>, StorageAreaMap*> m_storageAreaMaps;
};
}
#endif // WebStorageNamespaceImpl_h