Title: [148691] trunk/Source/WebKit2
Revision
148691
Author
[email protected]
Date
2013-04-18 11:18:29 -0700 (Thu, 18 Apr 2013)

Log Message

Begin fleshing out UI side local storage
https://bugs.webkit.org/show_bug.cgi?id=114820

Reviewed by Beth Dakin.

* WebProcess/Storage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
(WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
(WebKit::StorageNamespaceImpl::~StorageNamespaceImpl):
* WebProcess/Storage/StorageNamespaceImpl.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::localStorageNamespace):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (148690 => 148691)


--- trunk/Source/WebKit2/ChangeLog	2013-04-18 18:14:45 UTC (rev 148690)
+++ trunk/Source/WebKit2/ChangeLog	2013-04-18 18:18:29 UTC (rev 148691)
@@ -1,3 +1,19 @@
+2013-04-18  Anders Carlsson  <[email protected]>
+
+        Begin fleshing out UI side local storage
+        https://bugs.webkit.org/show_bug.cgi?id=114820
+
+        Reviewed by Beth Dakin.
+
+        * WebProcess/Storage/StorageNamespaceImpl.cpp:
+        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
+        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
+        (WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
+        (WebKit::StorageNamespaceImpl::~StorageNamespaceImpl):
+        * WebProcess/Storage/StorageNamespaceImpl.h:
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::localStorageNamespace):
+
 2013-04-18  Sam Weinig  <[email protected]>
 
         Fix spelling I thought I had fixed.

Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp (148690 => 148691)


--- trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp	2013-04-18 18:14:45 UTC (rev 148690)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp	2013-04-18 18:18:29 UTC (rev 148691)
@@ -29,6 +29,8 @@
 #include "StorageAreaImpl.h"
 #include "StorageAreaMap.h"
 #include "WebPage.h"
+#include <WebCore/GroupSettings.h>
+#include <WebCore/PageGroup.h>
 #include <WebCore/SecurityOrigin.h>
 #include <WebCore/Settings.h>
 
@@ -36,19 +38,45 @@
 
 namespace WebKit {
 
+typedef HashMap<uint64_t, StorageNamespaceImpl*> LocalStorageNamespaceMap;
+
+static LocalStorageNamespaceMap& localStorageNamespaceMap()
+{
+    DEFINE_STATIC_LOCAL(LocalStorageNamespaceMap, localStorageNamespaceMap, ());
+    return localStorageNamespaceMap;
+}
+
+PassRefPtr<StorageNamespaceImpl> StorageNamespaceImpl::createLocalStorageNamespace(PageGroup* pageGroup)
+{
+    LocalStorageNamespaceMap::AddResult result = localStorageNamespaceMap().add(pageGroup->identifier(), 0);
+    if (!result.isNewEntry)
+        return result.iterator->value;
+
+    unsigned quota = pageGroup->groupSettings()->localStorageQuotaBytes();
+    RefPtr<StorageNamespaceImpl> localStorageNamespace = adoptRef(new StorageNamespaceImpl(LocalStorage, pageGroup->identifier(), quota));
+
+    result.iterator->value = localStorageNamespace.get();
+    return localStorageNamespace.release();
+}
+
 PassRefPtr<StorageNamespaceImpl> StorageNamespaceImpl::createSessionStorageNamespace(WebPage* webPage)
 {
-    return adoptRef(new StorageNamespaceImpl(webPage->pageID(), webPage->corePage()->settings()->sessionStorageQuota()));
+    return adoptRef(new StorageNamespaceImpl(SessionStorage, webPage->pageID(), webPage->corePage()->settings()->sessionStorageQuota()));
 }
 
-StorageNamespaceImpl::StorageNamespaceImpl(uint64_t storageNamespaceID, unsigned quotaInBytes)
-    : m_storageNamespaceID(storageNamespaceID)
+StorageNamespaceImpl::StorageNamespaceImpl(WebCore::StorageType storageType, uint64_t storageNamespaceID, unsigned quotaInBytes)
+    : m_storageType(storageType)
+    , m_storageNamespaceID(storageNamespaceID)
     , m_quotaInBytes(quotaInBytes)
 {
 }
 
 StorageNamespaceImpl::~StorageNamespaceImpl()
 {
+    if (m_storageType == LocalStorage) {
+        ASSERT(localStorageNamespaceMap().contains(m_storageNamespaceID));
+        localStorageNamespaceMap().remove(m_storageNamespaceID);
+    }
 }
 
 PassRefPtr<StorageArea> StorageNamespaceImpl::storageArea(PassRefPtr<SecurityOrigin> securityOrigin)

Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h (148690 => 148691)


--- trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h	2013-04-18 18:14:45 UTC (rev 148690)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.h	2013-04-18 18:18:29 UTC (rev 148691)
@@ -38,14 +38,16 @@
 
 class StorageNamespaceImpl : public WebCore::StorageNamespace {
 public:
+    static PassRefPtr<StorageNamespaceImpl> createLocalStorageNamespace(WebCore::PageGroup*);
     static PassRefPtr<StorageNamespaceImpl> createSessionStorageNamespace(WebPage*);
     virtual ~StorageNamespaceImpl();
 
+    WebCore::StorageType storageType() const { return m_storageType; }
     uint64_t storageNamespaceID() const { return m_storageNamespaceID; }
     unsigned quotaInBytes() const { return m_quotaInBytes; }
 
 private:
-    explicit StorageNamespaceImpl(uint64_t storageNamespaceID, unsigned quotaInBytes);
+    explicit StorageNamespaceImpl(WebCore::StorageType, uint64_t storageNamespaceID, unsigned quotaInBytes);
 
     virtual PassRefPtr<WebCore::StorageArea> storageArea(PassRefPtr<WebCore::SecurityOrigin>) OVERRIDE;
     virtual PassRefPtr<WebCore::StorageNamespace> copy(WebCore::Page*) OVERRIDE;
@@ -55,6 +57,7 @@
     virtual void sync() OVERRIDE;
     virtual void closeIdleLocalStorageDatabases() OVERRIDE;
 
+    WebCore::StorageType m_storageType;
     uint64_t m_storageNamespaceID;
     unsigned m_quotaInBytes;
 

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (148690 => 148691)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2013-04-18 18:14:45 UTC (rev 148690)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2013-04-18 18:18:29 UTC (rev 148691)
@@ -300,7 +300,11 @@
 
 PassRefPtr<StorageNamespace> WebPlatformStrategies::localStorageNamespace(PageGroup* pageGroup)
 {
+#if ENABLE(UI_PROCESS_STORAGE)
+    return StorageNamespaceImpl::createLocalStorageNamespace(pageGroup);
+#else
     return StorageStrategy::localStorageNamespace(pageGroup);
+#endif
 }
 
 PassRefPtr<StorageNamespace> WebPlatformStrategies::sessionStorageNamespace(Page* page)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to