#ifndef StorageAreaImpl_h
#define StorageAreaImpl_h
#include "MessageReceiver.h"
#include <WebCore/StorageArea.h>
#include <wtf/HashCountedSet.h>
#include <wtf/HashMap.h>
namespace WebCore {
class SecurityOrigin;
}
namespace WebKit {
class StorageAreaMap;
class StorageAreaImpl final : public WebCore::StorageArea {
public:
static Ref<StorageAreaImpl> create(PassRefPtr<StorageAreaMap>);
virtual ~StorageAreaImpl();
uint64_t storageAreaID() const { return m_storageAreaID; }
private:
StorageAreaImpl(PassRefPtr<StorageAreaMap>);
virtual unsigned length() override;
virtual String key(unsigned index) override;
virtual String item(const String& key) override;
virtual void setItem(WebCore::Frame* sourceFrame, const String& key, const String& value, bool& quotaException) override;
virtual void removeItem(WebCore::Frame* sourceFrame, const String& key) override;
virtual void clear(WebCore::Frame* sourceFrame) override;
virtual bool contains(const String& key) override;
virtual bool canAccessStorage(WebCore::Frame*) override;
virtual WebCore::StorageType storageType() const override;
virtual size_t memoryBytesUsedByCache() override;
virtual void incrementAccessCount() override;
virtual void decrementAccessCount() override;
virtual void closeDatabaseIfIdle() override;
WebCore::SecurityOrigin& securityOrigin() override;
uint64_t m_storageAreaID;
RefPtr<StorageAreaMap> m_storageAreaMap;
};
}
#endif // StorageAreaImpl_h