Browse Source

refactor: use base::Value::Take*() (#41169)

* perf: avoid temporary strings in Converter<net::HttpRequestHeaders>::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."
Charles Kerr 11 months ago
parent
commit
10fd0ba655

+ 1 - 1
shell/browser/extensions/electron_extension_system.cc

@@ -103,7 +103,7 @@ std::unique_ptr<base::Value::Dict> ParseManifest(
     LOG(ERROR) << "Failed to parse extension manifest.";
     return std::unique_ptr<base::Value::Dict>();
   }
-  return std::make_unique<base::Value::Dict>(std::move(manifest->GetDict()));
+  return std::make_unique<base::Value::Dict>(std::move(*manifest).TakeDict());
 }
 
 void ElectronExtensionSystem::LoadComponentExtensions() {

+ 1 - 1
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;
 }
 

+ 2 - 4
shell/common/gin_converters/net_converter.cc

@@ -244,10 +244,8 @@ bool Converter<net::HttpRequestHeaders>::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;
 }

+ 2 - 2
shell/common/gin_converters/value_converter.cc

@@ -18,7 +18,7 @@ bool Converter<base::Value::Dict>::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<base::Value::List>::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;