Diff
Modified: trunk/Source/WebKit2/ChangeLog (143395 => 143396)
--- trunk/Source/WebKit2/ChangeLog 2013-02-19 23:23:39 UTC (rev 143395)
+++ trunk/Source/WebKit2/ChangeLog 2013-02-19 23:31:58 UTC (rev 143396)
@@ -1,3 +1,24 @@
+2013-02-19 Anders Carlsson <ander...@apple.com>
+
+ StorageAreaProxy should know its quota
+ https://bugs.webkit.org/show_bug.cgi?id=110268
+
+ Reviewed by Sam Weinig.
+
+ Begin stubbing out StorageAreaProxy::setItem and add some quota member variables.
+
+ * WebProcess/Storage/StorageAreaProxy.cpp:
+ (WebKit::StorageAreaProxy::StorageAreaProxy):
+ (WebKit::StorageAreaProxy::setItem):
+ * WebProcess/Storage/StorageAreaProxy.h:
+ (StorageAreaProxy):
+ * WebProcess/Storage/StorageNamespaceProxy.cpp:
+ (WebKit::StorageNamespaceProxy::createSessionStorageNamespace):
+ (WebKit::StorageNamespaceProxy::StorageNamespaceProxy):
+ * WebProcess/Storage/StorageNamespaceProxy.h:
+ (WebKit::StorageNamespaceProxy::quota):
+ (StorageNamespaceProxy):
+
2013-02-19 Alexey Proskuryakov <a...@apple.com>
<rdar://problem/13239119> NetworkProcess generates timeout spindump logs
Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp (143395 => 143396)
--- trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp 2013-02-19 23:23:39 UTC (rev 143395)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp 2013-02-19 23:31:58 UTC (rev 143396)
@@ -52,6 +52,7 @@
StorageAreaProxy::StorageAreaProxy(StorageNamespaceProxy* storageNamespaceProxy, PassRefPtr<SecurityOrigin> securityOrigin)
: m_storageType(storageNamespaceProxy->storageType())
+ , m_quotaInBytes(storageNamespaceProxy->quotaInBytes())
, m_storageAreaID(generateStorageAreaID())
{
WebProcess::shared().connection()->send(Messages::StorageManager::CreateStorageArea(m_storageAreaID, storageNamespaceProxy->storageNamespaceID(), SecurityOriginData::fromSecurityOrigin(securityOrigin.get())), 0);
@@ -62,11 +63,11 @@
WebProcess::shared().connection()->send(Messages::StorageManager::DestroyStorageArea(m_storageAreaID), 0);
}
-unsigned StorageAreaProxy::length(ExceptionCode& exceptionCode, Frame* sourceFrame)
+unsigned StorageAreaProxy::length(ExceptionCode& ec, Frame* sourceFrame)
{
- exceptionCode = 0;
+ ec = 0;
if (!canAccessStorage(sourceFrame)) {
- exceptionCode = SECURITY_ERR;
+ ec = SECURITY_ERR;
return 0;
}
@@ -91,9 +92,24 @@
return String();
}
-void StorageAreaProxy::setItem(const String& key, const String& value, ExceptionCode&, Frame* sourceFrame)
+void StorageAreaProxy::setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame)
{
- // FIXME: Implement this.
+ ec = 0;
+ if (!canAccessStorage(sourceFrame)) {
+ ec = SECURITY_ERR;
+ return;
+ }
+
+ ASSERT(!value.isNull());
+
+ if (disabledByPrivateBrowsingInFrame(sourceFrame)) {
+ ec = QUOTA_EXCEEDED_ERR;
+ return;
+ }
+
+ loadValuesIfNeeded();
+
+ // FIXME: Actually set the value.
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.h (143395 => 143396)
--- trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.h 2013-02-19 23:23:39 UTC (rev 143395)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.h 2013-02-19 23:31:58 UTC (rev 143396)
@@ -60,6 +60,7 @@
void loadValuesIfNeeded();
WebCore::StorageType m_storageType;
+ unsigned m_quotaInBytes;
uint64_t m_storageAreaID;
OwnPtr<HashMap<String, String> > m_values;
};
Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.cpp (143395 => 143396)
--- trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.cpp 2013-02-19 23:23:39 UTC (rev 143395)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.cpp 2013-02-19 23:31:58 UTC (rev 143396)
@@ -29,6 +29,7 @@
#include "StorageAreaProxy.h"
#include "WebPage.h"
#include <WebCore/SecurityOrigin.h>
+#include <WebCore/Settings.h>
using namespace WebCore;
@@ -36,11 +37,12 @@
PassRefPtr<StorageNamespaceProxy> StorageNamespaceProxy::createSessionStorageNamespace(WebPage* webPage)
{
- return adoptRef(new StorageNamespaceProxy(webPage));
+ return adoptRef(new StorageNamespaceProxy(webPage->pageID(), webPage->corePage()->settings()->sessionStorageQuota()));
}
-StorageNamespaceProxy::StorageNamespaceProxy(WebPage* webPage)
- : m_storageNamespaceID(webPage->pageID())
+StorageNamespaceProxy::StorageNamespaceProxy(uint64_t storageNamespaceID, unsigned quotaInBytes)
+ : m_storageNamespaceID(storageNamespaceID)
+ , m_quotaInBytes(quotaInBytes)
{
}
Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.h (143395 => 143396)
--- trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.h 2013-02-19 23:23:39 UTC (rev 143395)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageNamespaceProxy.h 2013-02-19 23:31:58 UTC (rev 143396)
@@ -39,10 +39,12 @@
virtual ~StorageNamespaceProxy();
uint64_t storageNamespaceID() const { return m_storageNamespaceID; }
+ unsigned quotaInBytes() const { return m_quotaInBytes; }
+
WebCore::StorageType storageType() const;
private:
- explicit StorageNamespaceProxy(WebPage*);
+ explicit StorageNamespaceProxy(uint64_t storageNamespaceID, unsigned quotaInBytes);
virtual PassRefPtr<WebCore::StorageArea> storageArea(PassRefPtr<WebCore::SecurityOrigin>) OVERRIDE;
virtual PassRefPtr<WebCore::StorageNamespace> copy() OVERRIDE;
@@ -53,6 +55,7 @@
virtual void closeIdleLocalStorageDatabases() OVERRIDE;
uint64_t m_storageNamespaceID;
+ unsigned m_quotaInBytes;
};
} // namespace WebKit