From 9bbe3b1b483211a909cbdd5d89e9e7a3e29a3909 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Wed, 22 Jun 2022 01:14:57 -0700 Subject: [PATCH] fix: modernize ListValue in net converters (#34657) --- shell/common/gin_converters/net_converter.cc | 48 ++++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/shell/common/gin_converters/net_converter.cc b/shell/common/gin_converters/net_converter.cc index d2b93166b3647..8b467d5509c23 100644 --- a/shell/common/gin_converters/net_converter.cc +++ b/shell/common/gin_converters/net_converter.cc @@ -153,20 +153,20 @@ v8::Local Converter::ToV8( v8::Local Converter::ToV8( v8::Isolate* isolate, net::HttpResponseHeaders* headers) { - base::DictionaryValue response_headers; + base::Value::Dict response_headers; if (headers) { size_t iter = 0; std::string key; std::string value; while (headers->EnumerateHeaderLines(&iter, &key, &value)) { key = base::ToLowerASCII(key); - base::Value* values = response_headers.FindListKey(key); + base::Value::List* values = response_headers.FindList(key); if (!values) - values = response_headers.SetKey(key, base::ListValue()); + values = &response_headers.Set(key, base::Value::List())->GetList(); values->Append(value); } } - return ConvertToV8(isolate, response_headers); + return ConvertToV8(isolate, base::Value(std::move(response_headers))); } bool Converter::FromV8( @@ -313,33 +313,31 @@ bool Converter>::FromV8( v8::Isolate* isolate, v8::Local val, scoped_refptr* out) { - auto list = std::make_unique(); - if (!ConvertFromV8(isolate, val, list.get())) + base::Value list_value; + if (!ConvertFromV8(isolate, val, &list_value) || !list_value.is_list()) return false; + base::Value::List& list = list_value.GetList(); *out = base::MakeRefCounted(); - for (size_t i = 0; i < list->GetListDeprecated().size(); ++i) { - base::DictionaryValue* dict = nullptr; - std::string type; - if (!list->GetDictionary(i, &dict)) + for (size_t i = 0; i < list.size(); ++i) { + base::Value& dict_value = list[i]; + if (!dict_value.is_dict()) return false; - dict->GetString("type", &type); - if (type == "rawData") { - const base::Value::BlobStorage* bytes = dict->FindBlobKey("bytes"); + base::Value::Dict& dict = dict_value.GetDict(); + std::string* type = dict.FindString("type"); + if (!type) + return false; + if (*type == "rawData") { + const base::Value::BlobStorage* bytes = dict.FindBlob("bytes"); (*out)->AppendBytes(reinterpret_cast(bytes->data()), base::checked_cast(bytes->size())); - } else if (type == "file") { - const std::string* file = dict->FindStringKey("filePath"); - if (file == nullptr) { + } else if (*type == "file") { + const std::string* file = dict.FindString("filePath"); + if (!file) return false; - } - int offset = 0, length = -1; - double modification_time = 0.0; - absl::optional maybe_modification_time = - dict->FindDoubleKey("modificationTime"); - if (maybe_modification_time.has_value()) - modification_time = maybe_modification_time.value(); - dict->GetInteger("offset", &offset); - dict->GetInteger("file", &length); + double modification_time = + dict.FindDouble("modificationTime").value_or(0.0); + int offset = dict.FindInt("offset").value_or(0); + int length = dict.FindInt("length").value_or(-1); (*out)->AppendFileRange(base::FilePath::FromUTF8Unsafe(*file), static_cast(offset), static_cast(length),