summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/Storage/StorageManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/Storage/StorageManager.h')
-rw-r--r--Source/WebKit2/UIProcess/Storage/StorageManager.h82
1 files changed, 40 insertions, 42 deletions
diff --git a/Source/WebKit2/UIProcess/Storage/StorageManager.h b/Source/WebKit2/UIProcess/Storage/StorageManager.h
index 93bb66c55..52f093e01 100644
--- a/Source/WebKit2/UIProcess/Storage/StorageManager.h
+++ b/Source/WebKit2/UIProcess/Storage/StorageManager.h
@@ -23,87 +23,87 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef StorageManager_h
-#define StorageManager_h
+#pragma once
#include "Connection.h"
+#include "LocalStorageDatabaseTracker.h"
+#include <WebCore/SecurityOriginData.h>
+#include <WebCore/SecurityOriginHash.h>
+#include <chrono>
#include <wtf/Forward.h>
-#include <wtf/PassRefPtr.h>
+#include <wtf/HashSet.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/text/StringHash.h>
-class WorkQueue;
-
namespace WebCore {
class SecurityOrigin;
}
namespace WebKit {
-struct SecurityOriginData;
class LocalStorageDatabaseTracker;
class WebProcessProxy;
class StorageManager : public IPC::Connection::WorkQueueMessageReceiver {
public:
- static PassRefPtr<StorageManager> create();
+ static Ref<StorageManager> create(const String& localStorageDirectory);
~StorageManager();
- void setLocalStorageDirectory(const String&);
-
- void createSessionStorageNamespace(uint64_t storageNamespaceID, IPC::Connection* allowedConnection, unsigned quotaInBytes);
+ void createSessionStorageNamespace(uint64_t storageNamespaceID, unsigned quotaInBytes);
void destroySessionStorageNamespace(uint64_t storageNamespaceID);
void setAllowedSessionStorageNamespaceConnection(uint64_t storageNamespaceID, IPC::Connection* allowedConnection);
void cloneSessionStorageNamespace(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID);
- void processWillOpenConnection(WebProcessProxy*);
- void processWillCloseConnection(WebProcessProxy*);
+ void processWillOpenConnection(WebProcessProxy&, IPC::Connection&);
+ void processDidCloseConnection(WebProcessProxy&, IPC::Connection&);
+ void applicationWillTerminate();
+
+ void getSessionStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+ void deleteSessionStorageOrigins(std::function<void()>&& completionHandler);
+ void deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
+
+ void getLocalStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+ void deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData&&);
+
+ void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function<void()>&& completionHandler);
+ void deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
- // FIXME: Instead of a context + C function, this should take a WTF::Function, but we currently don't
- // support arguments in functions.
- void getOrigins(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>& securityOrigins, void* context));
- void deleteEntriesForOrigin(WebCore::SecurityOrigin*);
- void deleteAllEntries();
+ void getLocalStorageOriginDetails(std::function<void(Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler);
private:
- StorageManager();
+ explicit StorageManager(const String& localStorageDirectory);
// IPC::Connection::WorkQueueMessageReceiver.
- virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
- virtual void didReceiveSyncMessage(IPC::Connection*, IPC::MessageDecoder&, std::unique_ptr<IPC::MessageEncoder>& replyEncoder) override;
+ void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
+ void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>& replyEncoder) override;
// Message handlers.
- void createLocalStorageMap(IPC::Connection*, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData&);
- void createSessionStorageMap(IPC::Connection*, uint64_t storageMapID, uint64_t storageNamespaceID, const SecurityOriginData&);
- void destroyStorageMap(IPC::Connection*, uint64_t storageMapID);
+ void createLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&&);
+ void createTransientLocalStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOriginData, WebCore::SecurityOriginData&&);
+ void createSessionStorageMap(IPC::Connection&, uint64_t storageMapID, uint64_t storageNamespaceID, WebCore::SecurityOriginData&&);
+ void destroyStorageMap(IPC::Connection&, uint64_t storageMapID);
- void getValues(IPC::Connection*, uint64_t storageMapID, uint64_t storageMapSeed, HashMap<String, String>& values);
- void setItem(IPC::Connection*, uint64_t storageAreaID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& key, const String& value, const String& urlString);
- void removeItem(IPC::Connection*, uint64_t storageMapID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& key, const String& urlString);
- void clear(IPC::Connection*, uint64_t storageMapID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& urlString);
-
- void createSessionStorageNamespaceInternal(uint64_t storageNamespaceID, IPC::Connection* allowedConnection, unsigned quotaInBytes);
- void destroySessionStorageNamespaceInternal(uint64_t storageNamespaceID);
- void setAllowedSessionStorageNamespaceConnectionInternal(uint64_t storageNamespaceID, IPC::Connection* allowedConnection);
- void cloneSessionStorageNamespaceInternal(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID);
-
- void invalidateConnectionInternal(IPC::Connection*);
+ void getValues(IPC::Connection&, uint64_t storageMapID, uint64_t storageMapSeed, HashMap<String, String>& values);
+ void setItem(IPC::Connection&, uint64_t storageAreaID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& key, const String& value, const String& urlString);
+ void removeItem(IPC::Connection&, uint64_t storageMapID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& key, const String& urlString);
+ void clear(IPC::Connection&, uint64_t storageMapID, uint64_t sourceStorageAreaID, uint64_t storageMapSeed, const String& urlString);
class StorageArea;
- StorageArea* findStorageArea(IPC::Connection*, uint64_t) const;
+ StorageArea* findStorageArea(IPC::Connection&, uint64_t) const;
class LocalStorageNamespace;
LocalStorageNamespace* getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID);
- void getOriginsInternal(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>& securityOrigins, void* context));
- void deleteEntriesForOriginInternal(WebCore::SecurityOrigin*);
- void deleteAllEntriesInternal();
+ class TransientLocalStorageNamespace;
+ TransientLocalStorageNamespace* getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOrigin);
- RefPtr<WorkQueue> m_queue;
+ Ref<WorkQueue> m_queue;
- RefPtr<LocalStorageDatabaseTracker> m_localStorageDatabaseTracker;
+ Ref<LocalStorageDatabaseTracker> m_localStorageDatabaseTracker;
HashMap<uint64_t, RefPtr<LocalStorageNamespace>> m_localStorageNamespaces;
+ HashMap<std::pair<uint64_t, WebCore::SecurityOriginData>, RefPtr<TransientLocalStorageNamespace>> m_transientLocalStorageNamespaces;
+
class SessionStorageNamespace;
HashMap<uint64_t, RefPtr<SessionStorageNamespace>> m_sessionStorageNamespaces;
@@ -111,5 +111,3 @@ private:
};
} // namespace WebKit
-
-#endif // StorageManager_h