Title: [177126] trunk/Source/WebCore
Revision
177126
Author
ander...@apple.com
Date
2014-12-10 18:35:06 -0800 (Wed, 10 Dec 2014)

Log Message

Add an empty storage namespace provider
https://bugs.webkit.org/show_bug.cgi?id=139520

Reviewed by Tim Horton.

* loader/EmptyClients.cpp:
(WebCore::fillWithEmptyClients):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (177125 => 177126)


--- trunk/Source/WebCore/ChangeLog	2014-12-11 02:33:57 UTC (rev 177125)
+++ trunk/Source/WebCore/ChangeLog	2014-12-11 02:35:06 UTC (rev 177126)
@@ -1,3 +1,13 @@
+2014-12-10  Anders Carlsson  <ander...@apple.com>
+
+        Add an empty storage namespace provider
+        https://bugs.webkit.org/show_bug.cgi?id=139520
+
+        Reviewed by Tim Horton.
+
+        * loader/EmptyClients.cpp:
+        (WebCore::fillWithEmptyClients):
+
 2014-12-10  Beth Dakin  <bda...@apple.com>
 
         Speculative build fix.

Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (177125 => 177126)


--- trunk/Source/WebCore/loader/EmptyClients.cpp	2014-12-11 02:33:57 UTC (rev 177125)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp	2014-12-11 02:35:06 UTC (rev 177126)
@@ -36,6 +36,9 @@
 #include "FrameNetworkingContext.h"
 #include "HTMLFormElement.h"
 #include "PageConfiguration.h"
+#include "StorageArea.h"
+#include "StorageNamespace.h"
+#include "StorageNamespaceProvider.h"
 #include <wtf/NeverDestroyed.h>
 
 #if ENABLE(INPUT_TYPE_COLOR)
@@ -44,6 +47,46 @@
 
 namespace WebCore {
 
+class EmptyStorageNamespaceProvider final : public StorageNamespaceProvider {
+    struct EmptyStorageArea : public StorageArea {
+        virtual unsigned length() override { return 0; }
+        virtual String key(unsigned) override { return String(); }
+        virtual String item(const String&) override { return String(); }
+        virtual void setItem(Frame*, const String&, const String&, bool&) override { }
+        virtual void removeItem(Frame*, const String&) override { }
+        virtual void clear(Frame*) override { }
+        virtual bool contains(const String&) override { return false; }
+        virtual bool canAccessStorage(Frame*) override { return false; }
+        virtual StorageType storageType() const override { return LocalStorage; }
+        virtual size_t memoryBytesUsedByCache() override { return 0; }
+    };
+
+    struct EmptyStorageNamespace final : public StorageNamespace {
+        virtual PassRefPtr<StorageArea> storageArea(PassRefPtr<SecurityOrigin>) override { return adoptRef(new EmptyStorageArea); }
+        virtual PassRefPtr<StorageNamespace> copy(Page*) override { return adoptRef(new EmptyStorageNamespace); }
+        virtual void close() override { }
+        virtual void clearOriginForDeletion(SecurityOrigin*) override { }
+        virtual void clearAllOriginsForDeletion() override { }
+        virtual void sync() override { }
+        virtual void closeIdleLocalStorageDatabases() override { }
+    };
+
+    virtual RefPtr<StorageNamespace> createSessionStorageNamespace(Page&, unsigned) override
+    {
+        return adoptRef(new EmptyStorageNamespace);
+    }
+
+    virtual RefPtr<StorageNamespace> createLocalStorageNamespace(unsigned) override
+    {
+        return adoptRef(new EmptyStorageNamespace);
+    }
+
+    virtual RefPtr<StorageNamespace> createTransientLocalStorageNamespace(SecurityOrigin&, unsigned) override
+    {
+        return adoptRef(new EmptyStorageNamespace);
+    }
+};
+
 class EmptyVisitedLinkStore : public VisitedLinkStore {
     virtual bool isLinkVisited(Page&, LinkHash, const URL&, const AtomicString&) override { return false; }
     virtual void addVisitedLink(Page&, LinkHash) override { }
@@ -79,6 +122,7 @@
     static NeverDestroyed<EmptyDiagnosticLoggingClient> dummyDiagnosticLoggingClient;
     pageConfiguration.diagnosticLoggingClient = &dummyDiagnosticLoggingClient.get();
 
+    pageConfiguration.storageNamespaceProvider = adoptRef(new EmptyStorageNamespaceProvider);
     pageConfiguration.visitedLinkStore = adoptRef(new EmptyVisitedLinkStore);
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to