Rename AtomicString to AtomString
[WebKit.git] / Source / WebCore / storage / Storage.h
index 219bc55..28aa9ab 100644 (file)
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef Storage_h
-#define Storage_h
+#pragma once
 
-#include <wtf/Forward.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
+#include "DOMWindowProperty.h"
+#include "ExceptionOr.h"
+#include "ScriptWrappable.h"
 
 namespace WebCore {
 
-    class Frame;
-    class StorageArea;
-    typedef int ExceptionCode;
+class StorageArea;
 
-    class Storage : public RefCounted<Storage> {
-    public:
-        static PassRefPtr<Storage> create(Frame*, PassRefPtr<StorageArea>);
-        ~Storage();
+class Storage final : public ScriptWrappable, public RefCounted<Storage>, public DOMWindowProperty {
+    WTF_MAKE_ISO_ALLOCATED(Storage);
+public:
+    static Ref<Storage> create(DOMWindow&, Ref<StorageArea>&&);
+    ~Storage();
 
-        unsigned length() const;
-        String key(unsigned index) const;
-        String getItem(const String&) const;
-        void setItem(const String& key, const String& value, ExceptionCode&);
-        void removeItem(const String&);
-        void clear();
+    unsigned length() const;
+    String key(unsigned index) const;
+    String getItem(const String& key) const;
+    ExceptionOr<void> setItem(const String& key, const String& value);
+    ExceptionOr<void> removeItem(const String& key);
+    ExceptionOr<void> clear();
+    bool contains(const String& key) const;
 
-        bool contains(const String& key) const;
+    // Bindings support functions.
+    bool isSupportedPropertyName(const String&) const;
+    Vector<AtomString> supportedPropertyNames() const;
 
-        Frame* frame() { return m_frame; }
-        void disconnectFrame() { m_frame = 0; }
+    StorageArea& area() const { return m_storageArea.get(); }
 
-    private:
-        Storage(Frame*, PassRefPtr<StorageArea>);
+private:
+    Storage(DOMWindow&, Ref<StorageArea>&&);
 
-        Frame* m_frame;
-        RefPtr<StorageArea> m_storageArea;
-    };
+    const Ref<StorageArea> m_storageArea;
+};
 
 } // namespace WebCore
-
-#endif // Storage_h