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)