#ifndef StorageAreaImpl_h
#define StorageAreaImpl_h
#if ENABLE(DOM_STORAGE)
#include "StorageArea.h"
namespace WebCore {
class StorageAreaImpl : public StorageArea {
public:
static PassRefPtr<StorageArea> create(StorageType, SecurityOrigin*, PassRefPtr<StorageSyncManager>);
virtual ~StorageAreaImpl();
virtual PassRefPtr<StorageArea> copy(SecurityOrigin*);
virtual unsigned length() const;
virtual String key(unsigned index, ExceptionCode& ec) const;
virtual String getItem(const String& key) const;
virtual void setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame);
virtual void removeItem(const String& key, Frame* sourceFrame);
virtual void clear(Frame* sourceFrame);
virtual bool contains(const String& key) const;
virtual void close();
void importItem(const String& key, const String& value);
SecurityOrigin* securityOrigin();
private:
StorageAreaImpl(StorageType, SecurityOrigin*, PassRefPtr<StorageSyncManager>);
StorageAreaImpl(SecurityOrigin*, StorageAreaImpl*);
void blockUntilImportComplete() const;
void dispatchStorageEvent(const String& key, const String& oldValue, const String& newValue, Frame* sourceFrame);
StorageType m_storageType;
RefPtr<SecurityOrigin> m_securityOrigin;
RefPtr<StorageMap> m_storageMap;
RefPtr<StorageAreaSync> m_storageAreaSync;
RefPtr<StorageSyncManager> m_storageSyncManager;
#ifndef NDEBUG
bool m_isShutdown;
#endif
};
}
#endif // ENABLE(DOM_STORAGE)
#endif // StorageAreaImpl_h