20
20
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
21
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
22
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
#ifndef StorageArea_h
27
27
#define StorageArea_h
29
#if ENABLE(DOM_STORAGE)
29
31
#include "PlatformString.h"
31
#include <wtf/Forward.h>
32
33
#include <wtf/PassRefPtr.h>
33
#include <wtf/RefCounted.h>
34
#include <wtf/RefPtr.h>
34
#include <wtf/Threading.h>
36
36
namespace WebCore {
39
39
class SecurityOrigin;
40
class StorageSyncManager;
41
41
typedef int ExceptionCode;
42
enum StorageType { LocalStorage, SessionStorage };
43
class StorageArea : public RefCounted<StorageArea> {
44
// This interface is required for Chromium since these actions need to be proxied between processes.
45
class StorageArea : public ThreadSafeShared<StorageArea> {
45
virtual ~StorageArea();
47
virtual unsigned length() const { return internalLength(); }
48
virtual String key(unsigned index, ExceptionCode& ec) const { return internalKey(index, ec); }
49
virtual String getItem(const String& key) const { return internalGetItem(key); }
50
virtual void setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame) { internalSetItem(key, value, ec, sourceFrame); }
51
virtual void removeItem(const String& key, Frame* sourceFrame) { internalRemoveItem(key, sourceFrame); }
52
virtual void clear(Frame* sourceFrame) { internalClear(sourceFrame); }
53
virtual bool contains(const String& key) const { return internalContains(key); }
55
SecurityOrigin* securityOrigin() { return m_securityOrigin.get(); }
58
StorageArea(SecurityOrigin*);
59
StorageArea(SecurityOrigin*, StorageArea*);
61
unsigned internalLength() const;
62
String internalKey(unsigned index, ExceptionCode&) const;
63
String internalGetItem(const String&) const;
64
void internalSetItem(const String& key, const String& value, ExceptionCode&, Frame* sourceFrame);
65
void internalRemoveItem(const String&, Frame* sourceFrame);
66
void internalClear(Frame* sourceFrame);
67
bool internalContains(const String& key) const;
69
// This is meant to be called from a background thread for LocalStorageArea's background thread import procedure.
70
void importItem(const String& key, const String& value);
73
virtual void itemChanged(const String& key, const String& oldValue, const String& newValue, Frame* sourceFrame) = 0;
74
virtual void itemRemoved(const String& key, const String& oldValue, Frame* sourceFrame) = 0;
75
virtual void areaCleared(Frame* sourceFrame) = 0;
77
RefPtr<SecurityOrigin> m_securityOrigin;
78
RefPtr<StorageMap> m_storageMap;
47
virtual ~StorageArea() { }
49
// The HTML5 DOM Storage API
50
virtual unsigned length() const = 0;
51
virtual String key(unsigned index) const = 0;
52
virtual String getItem(const String& key) const = 0;
53
virtual void setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame) = 0;
54
virtual void removeItem(const String& key, Frame* sourceFrame) = 0;
55
virtual void clear(Frame* sourceFrame) = 0;
56
virtual bool contains(const String& key) const = 0;
81
59
} // namespace WebCore
61
#endif // ENABLE(DOM_STORAGE)
83
63
#endif // StorageArea_h