StorageNamespaceImpl.h [plain text]
#ifndef StorageNamespaceImpl_h
#define StorageNamespaceImpl_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 PassRefPtr<StorageNamespaceImpl> createLocalStorageNamespace(WebCore::PageGroup*);
static PassRefPtr<StorageNamespaceImpl> createSessionStorageNamespace(WebPage*);
virtual ~StorageNamespaceImpl();
WebCore::StorageType storageType() const { return m_storageType; }
uint64_t storageNamespaceID() const { return m_storageNamespaceID; }
unsigned quotaInBytes() const { return m_quotaInBytes; }
private:
explicit StorageNamespaceImpl(WebCore::StorageType, uint64_t storageNamespaceID, unsigned quotaInBytes);
virtual PassRefPtr<WebCore::StorageArea> storageArea(PassRefPtr<WebCore::SecurityOrigin>) OVERRIDE;
virtual PassRefPtr<WebCore::StorageNamespace> copy(WebCore::Page*) OVERRIDE;
virtual void close() OVERRIDE;
virtual void clearOriginForDeletion(WebCore::SecurityOrigin*) OVERRIDE;
virtual void clearAllOriginsForDeletion() OVERRIDE;
virtual void sync() OVERRIDE;
virtual void closeIdleLocalStorageDatabases() OVERRIDE;
WebCore::StorageType m_storageType;
uint64_t m_storageNamespaceID;
unsigned m_quotaInBytes;
HashMap<RefPtr<WebCore::SecurityOrigin>, RefPtr<StorageAreaMap>> m_storageAreaMaps;
};
}
#endif // StorageNamespaceImpl_h