@@ -88,29 +88,29 @@ protocol::DispatchResponse DOMStorageAgent::getDOMStorageItems(
8888 " DOMStorage domain is not enabled" );
8989 }
9090 bool is_local_storage = storageId->getIsLocalStorage ();
91- std::optional<std::unordered_map<std::string, std::string> > storage_map =
91+ std::optional<StorageMap > storage_map =
9292 is_local_storage
93- ? std::make_optional<std::unordered_map<std::string, std::string>>(
94- local_storage_map_)
95- : std::make_optional<std::unordered_map<std::string, std::string>>(
96- session_storage_map_);
93+ ? std::make_optional<StorageMap>(local_storage_map_)
94+ : std::make_optional<StorageMap>(session_storage_map_);
9795 if (storage_map->empty ()) {
9896 auto web_storage_obj = getWebStorage (is_local_storage);
9997 if (web_storage_obj) {
100- std::unordered_map<std::string, std::string> all_items =
101- web_storage_obj.value ()->GetAll ();
98+ StorageMap all_items = web_storage_obj.value ()->GetAll ();
10299 storage_map =
103- std::make_optional<std::unordered_map<std::string, std::string>>(
104- std::move (all_items));
100+ std::make_optional<StorageMap>(std::move (all_items));
105101 }
106102 }
107103
108104 auto result =
109105 std::make_unique<protocol::Array<protocol::Array<protocol::String>>>();
110106 for (const auto & pair : *storage_map) {
111107 auto item = std::make_unique<protocol::Array<protocol::String>>();
112- item->push_back (pair.first );
113- item->push_back (pair.second );
108+ item->push_back (
109+ protocol::StringUtil::fromUTF16 (reinterpret_cast <const uint16_t *>(pair.first .data ()),
110+ pair.first .size ()));
111+ item->push_back (
112+ protocol::StringUtil::fromUTF16 (reinterpret_cast <const uint16_t *>(pair.second .data ()),
113+ pair.second .size ()));
114114 result->push_back (std::move (item));
115115 }
116116 *items = std::move (result);
@@ -237,7 +237,7 @@ void DOMStorageAgent::registerStorage(Local<Context> context,
237237 .ToLocal (&storage_map_obj)) {
238238 return ;
239239 }
240- std::unordered_map<std::string, std::string> & storage_map =
240+ StorageMap & storage_map =
241241 is_local_storage ? local_storage_map_ : session_storage_map_;
242242 Local<Array> property_names;
243243 if (!storage_map_obj->GetOwnPropertyNames (context).ToLocal (&property_names)) {
@@ -253,10 +253,13 @@ void DOMStorageAgent::registerStorage(Local<Context> context,
253253 if (!storage_map_obj->Get (context, key_value).ToLocal (&value_value)) {
254254 return ;
255255 }
256- node::Utf8Value key_utf8 (isolate, key_value);
257- node::Utf8Value value_utf8 (isolate, value_value);
258- storage_map[*key_utf8] = *value_utf8;
259- }
256+ node::TwoByteValue key_utf16 (isolate, key_value);
257+ node::TwoByteValue value_utf16 (isolate, value_value);
258+ storage_map[std::u16string (
259+ reinterpret_cast <const char16_t *>(*key_utf16), key_utf16.length ())] =
260+ std::u16string (reinterpret_cast <const char16_t *>(*value_utf16),
261+ value_utf16.length ());
262+ }
260263}
261264
262265std::optional<node::webstorage::Storage*> DOMStorageAgent::getWebStorage (
0 commit comments