Title: [160381] trunk/Source/WebKit2
- Revision
- 160381
- Author
- ander...@apple.com
- Date
- 2013-12-10 13:07:26 -0800 (Tue, 10 Dec 2013)
Log Message
Add more API object types to UserData
https://bugs.webkit.org/show_bug.cgi?id=125532
Reviewed by Beth Dakin.
* Shared/UserData.cpp:
(WebKit::UserData::transform):
Handle dictionaries.
(WebKit::UserData::encode):
(WebKit::UserData::decode):
Handle more API::Objects.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (160380 => 160381)
--- trunk/Source/WebKit2/ChangeLog 2013-12-10 20:12:56 UTC (rev 160380)
+++ trunk/Source/WebKit2/ChangeLog 2013-12-10 21:07:26 UTC (rev 160381)
@@ -1,5 +1,20 @@
2013-12-10 Anders Carlsson <ander...@apple.com>
+ Add more API object types to UserData
+ https://bugs.webkit.org/show_bug.cgi?id=125532
+
+ Reviewed by Beth Dakin.
+
+ * Shared/UserData.cpp:
+ (WebKit::UserData::transform):
+ Handle dictionaries.
+
+ (WebKit::UserData::encode):
+ (WebKit::UserData::decode):
+ Handle more API::Objects.
+
+2013-12-10 Anders Carlsson <ander...@apple.com>
+
More UserData work
https://bugs.webkit.org/show_bug.cgi?id=125524
Modified: trunk/Source/WebKit2/Shared/UserData.cpp (160380 => 160381)
--- trunk/Source/WebKit2/Shared/UserData.cpp 2013-12-10 20:12:56 UTC (rev 160380)
+++ trunk/Source/WebKit2/Shared/UserData.cpp 2013-12-10 21:07:26 UTC (rev 160381)
@@ -30,7 +30,10 @@
#include "APIFrameHandle.h"
#include "ArgumentCoders.h"
#include "ArgumentEncoder.h"
+#include "MutableDictionary.h"
#include "WebNumber.h"
+#include "WebSerializedScriptValue.h"
+#include "WebString.h"
#include "WebURL.h"
namespace WebKit {
@@ -60,6 +63,16 @@
return API::Array::create(std::move(elements));
}
+ if (object->type() == API::Object::Type::Dictionary) {
+ auto& dictionary = static_cast<ImmutableDictionary&>(*object);
+
+ ImmutableDictionary::MapType map;
+ for (const auto& keyValuePair : dictionary.map())
+ map.add(keyValuePair.key, transform(keyValuePair.value.get(), transformer));
+
+ return ImmutableDictionary::adopt(map);
+ }
+
if (auto transformedObject = transformer(*object))
return transformedObject;
@@ -106,12 +119,36 @@
break;
}
+ case API::Object::Type::Dictionary: {
+ auto& dictionary = static_cast<const ImmutableDictionary&>(object);
+ auto& map = dictionary.map();
+
+ encoder << map.size();
+ for (const auto& keyValuePair : map) {
+ encoder << keyValuePair.key;
+ encode(encoder, keyValuePair.value.get());
+ }
+ break;
+ }
+
case API::Object::Type::FrameHandle: {
auto& frameHandle = static_cast<const API::FrameHandle&>(object);
encoder << frameHandle.frameID();
break;
}
+ case API::Object::Type::SerializedScriptValue: {
+ auto& serializedScriptValue = static_cast<const WebSerializedScriptValue&>(object);
+ encoder << serializedScriptValue.dataReference();
+ break;
+ }
+
+ case API::Object::Type::String: {
+ auto& string = static_cast<const WebString&>(object);
+ encoder << string.string();
+ break;
+ }
+
case API::Object::Type::URL: {
auto& url = "" WebURL&>(object);
encoder << url.string();
@@ -163,6 +200,29 @@
break;
}
+ case API::Object::Type::Dictionary: {
+ uint64_t size;
+ if (!decoder.decode(size))
+ return false;
+
+ ImmutableDictionary::MapType map;
+ for (size_t i = 0; i < size; ++i) {
+ String key;
+ if (!decoder.decode(key))
+ return false;
+
+ RefPtr<API::Object> value;
+ if (!decode(decoder, value))
+ return false;
+
+ if (!map.add(std::move(key), std::move(value)).isNewEntry)
+ return false;
+ }
+
+ result = ImmutableDictionary::adopt(map);
+ break;
+ }
+
case API::Object::Type::FrameHandle: {
uint64_t frameID;
if (!decoder.decode(frameID))
@@ -176,6 +236,25 @@
result = nullptr;
break;
+ case API::Object::Type::SerializedScriptValue: {
+ CoreIPC::DataReference dataReference;
+ if (!decoder.decode(dataReference))
+ return false;
+
+ auto vector = dataReference.vector();
+ result = WebSerializedScriptValue::adopt(vector);
+ break;
+ }
+
+ case API::Object::Type::String: {
+ String string;
+ if (!decoder.decode(string))
+ return false;
+
+ result = WebString::create(string);
+ break;
+ }
+
case API::Object::Type::URL: {
String string;
if (!decoder.decode(string))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes