summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h')
-rw-r--r--Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h47
1 files changed, 28 insertions, 19 deletions
diff --git a/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h b/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h
index 05ed85fee..f13a22dcb 100644
--- a/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h
+++ b/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,11 +23,12 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef StorageNamespaceImpl_h
-#define StorageNamespaceImpl_h
+#pragma once
+#include <WebCore/SecurityOriginData.h>
#include <WebCore/SecurityOriginHash.h>
#include <WebCore/StorageArea.h>
+#include <WebCore/StorageMap.h>
#include <WebCore/StorageNamespace.h>
#include <wtf/HashMap.h>
@@ -38,32 +39,40 @@ class WebPage;
class StorageNamespaceImpl : public WebCore::StorageNamespace {
public:
- static PassRefPtr<StorageNamespaceImpl> createLocalStorageNamespace(WebCore::PageGroup*);
- static PassRefPtr<StorageNamespaceImpl> createSessionStorageNamespace(WebPage*);
+ static RefPtr<StorageNamespaceImpl> createSessionStorageNamespace(uint64_t identifier, unsigned quotaInBytes);
+ static RefPtr<StorageNamespaceImpl> createEphemeralLocalStorageNamespace(uint64_t identifier, unsigned quotaInBytes);
+ static RefPtr<StorageNamespaceImpl> createLocalStorageNamespace(uint64_t identifier, unsigned quotaInBytes);
+ static RefPtr<StorageNamespaceImpl> createTransientLocalStorageNamespace(uint64_t identifier, WebCore::SecurityOrigin& topLevelOrigin, uint64_t quotaInBytes);
+
virtual ~StorageNamespaceImpl();
WebCore::StorageType storageType() const { return m_storageType; }
uint64_t storageNamespaceID() const { return m_storageNamespaceID; }
+ WebCore::SecurityOrigin* topLevelOrigin() const { return m_topLevelOrigin.get(); }
unsigned quotaInBytes() const { return m_quotaInBytes; }
+ void didDestroyStorageAreaMap(StorageAreaMap&);
+
private:
- explicit StorageNamespaceImpl(WebCore::StorageType, uint64_t storageNamespaceID, unsigned quotaInBytes);
+ explicit StorageNamespaceImpl(WebCore::StorageType, uint64_t storageNamespaceID, WebCore::SecurityOrigin* topLevelOrigin, unsigned quotaInBytes);
+
+ RefPtr<WebCore::StorageArea> storageArea(const WebCore::SecurityOriginData&) override;
+ RefPtr<WebCore::StorageNamespace> copy(WebCore::Page*) override;
+
+ RefPtr<WebCore::StorageArea> ephemeralLocalStorageArea(const WebCore::SecurityOriginData&);
- 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;
+ const WebCore::StorageType m_storageType;
+ const uint64_t m_storageNamespaceID;
- WebCore::StorageType m_storageType;
- uint64_t m_storageNamespaceID;
- unsigned m_quotaInBytes;
+ // Only used for transient local storage namespaces.
+ const RefPtr<WebCore::SecurityOrigin> m_topLevelOrigin;
- HashMap<RefPtr<WebCore::SecurityOrigin>, RefPtr<StorageAreaMap>> m_storageAreaMaps;
+ const unsigned m_quotaInBytes;
+
+ HashMap<WebCore::SecurityOriginData, StorageAreaMap*> m_storageAreaMaps;
+
+ class EphemeralStorageArea;
+ HashMap<WebCore::SecurityOriginData, RefPtr<EphemeralStorageArea>> m_ephemeralLocalStorageAreas;
};
} // namespace WebKit
-
-#endif // StorageNamespaceImpl_h