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