From 10fd0ba655d619681e3e28182b891fda3b916209 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 13 May 2024 08:58:52 -0500 Subject: [PATCH] refactor: use base::Value::Take*() (#41169) * perf: avoid temporary strings in Converter::FromV8() * perf: take strings instead of copying them in ToResponseHead() * refactor: prefer base::Value::Take*() where appropriate As per the base::Value docs: "prefer over `std::move(value.Get...())` so clang-tidy can warn about potential use-after-move mistakes." --- shell/browser/extensions/electron_extension_system.cc | 2 +- shell/common/asar/archive.cc | 2 +- shell/common/gin_converters/net_converter.cc | 6 ++---- shell/common/gin_converters/value_converter.cc | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/shell/browser/extensions/electron_extension_system.cc b/shell/browser/extensions/electron_extension_system.cc index e74d55646f10..9468170f2a1c 100644 --- a/shell/browser/extensions/electron_extension_system.cc +++ b/shell/browser/extensions/electron_extension_system.cc @@ -103,7 +103,7 @@ std::unique_ptr ParseManifest( LOG(ERROR) << "Failed to parse extension manifest."; return std::unique_ptr(); } - return std::make_unique(std::move(manifest->GetDict())); + return std::make_unique(std::move(*manifest).TakeDict()); } void ElectronExtensionSystem::LoadComponentExtensions() { diff --git a/shell/common/asar/archive.cc b/shell/common/asar/archive.cc index 6e72d0e3b634..b7e2a12ab285 100644 --- a/shell/common/asar/archive.cc +++ b/shell/common/asar/archive.cc @@ -270,7 +270,7 @@ bool Archive::Init() { } header_size_ = 8 + size; - header_ = std::move(value->GetDict()); + header_ = std::move(*value).TakeDict(); return true; } diff --git a/shell/common/gin_converters/net_converter.cc b/shell/common/gin_converters/net_converter.cc index 69693bdafa6e..9e00975ee20c 100644 --- a/shell/common/gin_converters/net_converter.cc +++ b/shell/common/gin_converters/net_converter.cc @@ -244,10 +244,8 @@ bool Converter::FromV8(v8::Isolate* isolate, if (!ConvertFromV8(isolate, val, &dict)) return false; for (const auto it : dict) { - if (it.second.is_string()) { - std::string value = it.second.GetString(); - out->SetHeader(it.first, value); - } + if (it.second.is_string()) + out->SetHeader(it.first, std::move(it.second).TakeString()); } return true; } diff --git a/shell/common/gin_converters/value_converter.cc b/shell/common/gin_converters/value_converter.cc index 7954ec1ee5e2..b82c13d72aea 100644 --- a/shell/common/gin_converters/value_converter.cc +++ b/shell/common/gin_converters/value_converter.cc @@ -18,7 +18,7 @@ bool Converter::FromV8(v8::Isolate* isolate, content::V8ValueConverter::Create()->FromV8Value( val, isolate->GetCurrentContext()); if (value && value->is_dict()) { - *out = std::move(value->GetDict()); + *out = std::move(*value).TakeDict(); return true; } else { return false; @@ -53,7 +53,7 @@ bool Converter::FromV8(v8::Isolate* isolate, content::V8ValueConverter::Create()->FromV8Value( val, isolate->GetCurrentContext()); if (value && value->is_list()) { - *out = std::move(value->GetList()); + *out = std::move(*value).TakeList(); return true; } else { return false;