Title: [143396] trunk/Source/WebKit2
Revision
143396
Author
ander...@apple.com
Date
2013-02-19 15:31:58 -0800 (Tue, 19 Feb 2013)

Log Message

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):

Modified Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to