Changeset 160381 in webkit
- Timestamp:
- Dec 10, 2013 1:07:26 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r160378 r160381 1 2013-12-10 Anders Carlsson <andersca@apple.com> 2 3 Add more API object types to UserData 4 https://bugs.webkit.org/show_bug.cgi?id=125532 5 6 Reviewed by Beth Dakin. 7 8 * Shared/UserData.cpp: 9 (WebKit::UserData::transform): 10 Handle dictionaries. 11 12 (WebKit::UserData::encode): 13 (WebKit::UserData::decode): 14 Handle more API::Objects. 15 1 16 2013-12-10 Anders Carlsson <andersca@apple.com> 2 17 -
trunk/Source/WebKit2/Shared/UserData.cpp
r160378 r160381 31 31 #include "ArgumentCoders.h" 32 32 #include "ArgumentEncoder.h" 33 #include "MutableDictionary.h" 33 34 #include "WebNumber.h" 35 #include "WebSerializedScriptValue.h" 36 #include "WebString.h" 34 37 #include "WebURL.h" 35 38 … … 59 62 60 63 return API::Array::create(std::move(elements)); 64 } 65 66 if (object->type() == API::Object::Type::Dictionary) { 67 auto& dictionary = static_cast<ImmutableDictionary&>(*object); 68 69 ImmutableDictionary::MapType map; 70 for (const auto& keyValuePair : dictionary.map()) 71 map.add(keyValuePair.key, transform(keyValuePair.value.get(), transformer)); 72 73 return ImmutableDictionary::adopt(map); 61 74 } 62 75 … … 107 120 } 108 121 122 case API::Object::Type::Dictionary: { 123 auto& dictionary = static_cast<const ImmutableDictionary&>(object); 124 auto& map = dictionary.map(); 125 126 encoder << map.size(); 127 for (const auto& keyValuePair : map) { 128 encoder << keyValuePair.key; 129 encode(encoder, keyValuePair.value.get()); 130 } 131 break; 132 } 133 109 134 case API::Object::Type::FrameHandle: { 110 135 auto& frameHandle = static_cast<const API::FrameHandle&>(object); 111 136 encoder << frameHandle.frameID(); 137 break; 138 } 139 140 case API::Object::Type::SerializedScriptValue: { 141 auto& serializedScriptValue = static_cast<const WebSerializedScriptValue&>(object); 142 encoder << serializedScriptValue.dataReference(); 143 break; 144 } 145 146 case API::Object::Type::String: { 147 auto& string = static_cast<const WebString&>(object); 148 encoder << string.string(); 112 149 break; 113 150 } … … 164 201 } 165 202 203 case API::Object::Type::Dictionary: { 204 uint64_t size; 205 if (!decoder.decode(size)) 206 return false; 207 208 ImmutableDictionary::MapType map; 209 for (size_t i = 0; i < size; ++i) { 210 String key; 211 if (!decoder.decode(key)) 212 return false; 213 214 RefPtr<API::Object> value; 215 if (!decode(decoder, value)) 216 return false; 217 218 if (!map.add(std::move(key), std::move(value)).isNewEntry) 219 return false; 220 } 221 222 result = ImmutableDictionary::adopt(map); 223 break; 224 } 225 166 226 case API::Object::Type::FrameHandle: { 167 227 uint64_t frameID; … … 177 237 break; 178 238 239 case API::Object::Type::SerializedScriptValue: { 240 CoreIPC::DataReference dataReference; 241 if (!decoder.decode(dataReference)) 242 return false; 243 244 auto vector = dataReference.vector(); 245 result = WebSerializedScriptValue::adopt(vector); 246 break; 247 } 248 249 case API::Object::Type::String: { 250 String string; 251 if (!decoder.decode(string)) 252 return false; 253 254 result = WebString::create(string); 255 break; 256 } 257 179 258 case API::Object::Type::URL: { 180 259 String string;
Note: See TracChangeset
for help on using the changeset viewer.