Title: [144130] trunk/Source
Revision
144130
Author
ander...@apple.com
Date
2013-02-26 17:20:27 -0800 (Tue, 26 Feb 2013)

Log Message

Implement StorageAreaProxy::getItem and StorageAreaProxy::setItem
https://bugs.webkit.org/show_bug.cgi?id=110927

Reviewed by Sam Weinig.

Source/WebCore:

Export StorageMap::getItem and StorageMap::setItem.

* WebCore.exp.in:

Source/WebKit2:

* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::setItem):
* UIProcess/Storage/StorageManager.h:
Add empty stub.

* UIProcess/Storage/StorageManager.messages.in:
Add SetItem message.

* WebProcess/Storage/StorageAreaProxy.cpp:
(WebKit::StorageAreaProxy::getItem):
Fill the storage map and get the item from it.

(WebKit::StorageAreaProxy::setItem):
Update the storage map and send a SetItem message to the UI process.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (144129 => 144130)


--- trunk/Source/WebCore/ChangeLog	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebCore/ChangeLog	2013-02-27 01:20:27 UTC (rev 144130)
@@ -1,3 +1,14 @@
+2013-02-26  Anders Carlsson  <ander...@apple.com>
+
+        Implement StorageAreaProxy::getItem and StorageAreaProxy::setItem
+        https://bugs.webkit.org/show_bug.cgi?id=110927
+
+        Reviewed by Sam Weinig.
+
+        Export StorageMap::getItem and StorageMap::setItem.
+
+        * WebCore.exp.in:
+
 2013-02-26  Adam Klein  <ad...@chromium.org>
 
         Parsing of HTML tags in MathML Text Insertion Points leads to bogus parser behavior

Modified: trunk/Source/WebCore/WebCore.exp.in (144129 => 144130)


--- trunk/Source/WebCore/WebCore.exp.in	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebCore/WebCore.exp.in	2013-02-27 01:20:27 UTC (rev 144130)
@@ -84,6 +84,7 @@
 __ZN7WebCore10ScrollView8addChildEN3WTF10PassRefPtrINS_6WidgetEEE
 __ZN7WebCore10StorageMap11importItemsERKN3WTF7HashMapINS1_6StringES3_NS1_10StringHashENS1_10HashTraitsIS3_EES6_EE
 __ZN7WebCore10StorageMap6createEj
+__ZN7WebCore10StorageMap7setItemERKN3WTF6StringES4_RS2_Rb
 __ZN7WebCore10deleteFileERKN3WTF6StringE
 __ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKN3WTF6StringE
 __ZN7WebCore10toDocumentEN3JSC7JSValueE
@@ -1186,6 +1187,7 @@
 __ZNK7WebCore10ScrollView18contentsToRootViewERKNS_7IntRectE
 __ZNK7WebCore10ScrollView18contentsToRootViewERKNS_8IntPointE
 __ZNK7WebCore10StorageMap6lengthEv
+__ZNK7WebCore10StorageMap7getItemERKN3WTF6StringE
 __ZNK7WebCore11FrameLoader10isCompleteEv
 __ZNK7WebCore11FrameLoader14cancelledErrorERKNS_15ResourceRequestE
 __ZNK7WebCore11FrameLoader14frameHasLoadedEv

Modified: trunk/Source/WebKit2/ChangeLog (144129 => 144130)


--- trunk/Source/WebKit2/ChangeLog	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebKit2/ChangeLog	2013-02-27 01:20:27 UTC (rev 144130)
@@ -1,5 +1,27 @@
 2013-02-26  Anders Carlsson  <ander...@apple.com>
 
+        Implement StorageAreaProxy::getItem and StorageAreaProxy::setItem
+        https://bugs.webkit.org/show_bug.cgi?id=110927
+
+        Reviewed by Sam Weinig.
+
+        * UIProcess/Storage/StorageManager.cpp:
+        (WebKit::StorageManager::setItem):
+        * UIProcess/Storage/StorageManager.h:
+        Add empty stub.
+        
+        * UIProcess/Storage/StorageManager.messages.in:
+        Add SetItem message.
+
+        * WebProcess/Storage/StorageAreaProxy.cpp:
+        (WebKit::StorageAreaProxy::getItem):
+        Fill the storage map and get the item from it.
+
+        (WebKit::StorageAreaProxy::setItem):
+        Update the storage map and send a SetItem message to the UI process.
+
+2013-02-26  Anders Carlsson  <ander...@apple.com>
+
         StorageAreaProxy should hold on to a StorageMap and not a HashMap
         https://bugs.webkit.org/show_bug.cgi?id=110919
 

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (144129 => 144130)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2013-02-27 01:20:27 UTC (rev 144130)
@@ -146,6 +146,11 @@
     // FIXME: Implement this.
 }
 
+void StorageManager::setItem(CoreIPC::Connection*, uint64_t storageAreaID, const String& key, const String& value)
+{
+    // FIXME: Find the right storage area and set the item.
+}
+
 void StorageManager::createSessionStorageNamespaceInternal(uint64_t storageNamespaceID)
 {
     ASSERT(!m_sessionStorageNamespaces.contains(storageNamespaceID));

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (144129 => 144130)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h	2013-02-27 01:20:27 UTC (rev 144130)
@@ -61,6 +61,7 @@
     void createStorageArea(CoreIPC::Connection*, uint64_t storageAreaID, uint64_t storageNamespaceID, const SecurityOriginData&);
     void destroyStorageArea(CoreIPC::Connection*, uint64_t storageAreaID);
     void getValues(CoreIPC::Connection*, uint64_t storageAreaID, HashMap<String, String>& values);
+    void setItem(CoreIPC::Connection*, uint64_t storageAreaID, const String& key, const String& value);
 
     void createSessionStorageNamespaceInternal(uint64_t storageNamespaceID);
     void destroySessionStorageNamespaceInternal(uint64_t storageNamespaceID);

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in (144129 => 144130)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.messages.in	2013-02-27 01:20:27 UTC (rev 144130)
@@ -25,4 +25,6 @@
     DestroyStorageArea(uint64_t storageAreaID) WantsConnection
 
     GetValues(uint64_t storageAreaID) -> (WTF::HashMap<WTF::String, WTF::String> values) WantsConnection
+
+    SetItem(uint64_t storageAreaID, WTF::String key, WTF::String value) WantsConnection
 }

Modified: trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp (144129 => 144130)


--- trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp	2013-02-27 01:09:52 UTC (rev 144129)
+++ trunk/Source/WebKit2/WebProcess/Storage/StorageAreaProxy.cpp	2013-02-27 01:20:27 UTC (rev 144130)
@@ -87,11 +87,18 @@
     return String();
 }
 
-String StorageAreaProxy::getItem(const String& key, ExceptionCode&, Frame* sourceFrame)
+String StorageAreaProxy::getItem(const String& key, ExceptionCode& ec, Frame* sourceFrame)
 {
-    // FIXME: Implement this.
-    ASSERT_NOT_REACHED();
-    return String();
+    ec = 0;
+    if (!canAccessStorage(sourceFrame)) {
+        ec = SECURITY_ERR;
+        return String();
+    }
+    if (disabledByPrivateBrowsingInFrame(sourceFrame))
+        return String();
+
+    loadValuesIfNeeded();
+    return m_storageMap->getItem(key);
 }
 
 void StorageAreaProxy::setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame)
@@ -111,8 +118,20 @@
 
     loadValuesIfNeeded();
 
-    // FIXME: Actually set the value.
-    ASSERT_NOT_REACHED();
+    ASSERT(m_storageMap->hasOneRef());
+    String oldValue;
+    bool quotaException;
+    m_storageMap->setItem(key, value, oldValue, quotaException);
+
+    if (quotaException) {
+        ec = QUOTA_EXCEEDED_ERR;
+        return;
+    }
+
+    if (oldValue == value)
+        return;
+
+    WebProcess::shared().connection()->send(Messages::StorageManager::SetItem(m_storageAreaID, key, value), 0);
 }
 
 void StorageAreaProxy::removeItem(const String& key, ExceptionCode&, Frame* sourceFrame)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to