Re-write many calls to WrapUnique() with MakeUnique()

A mostly-automated change to convert instances of WrapUnique(new Foo(...)) to
MakeUnique<Foo>(...). See the thread at
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/iQgMedVA8-k
for background.

To avoid requiring too many manual fixups, the change skips some cases that are
frequently problematic. In particular, in methods named Foo::Method() it will
not try to change WrapUnique(new Foo()) to MakeUnique<Foo>(). This is because
Foo::Method() may be accessing an internal constructor of Foo.

Cases where MakeUnique<NestedClass>(...) is called within a method of
OuterClass are common but hard to detect automatically, so have been fixed-up
manually.

The only types of manual fix ups applied are:
1) Revert MakeUnique back to WrapUnique
2) Change NULL to nullptr in argument list (MakeUnique cannot forward NULL
   correctly)
3) Add base:: namespace qualifier where missing.

WrapUnique(new Foo) has not been converted to MakeUnique<Foo>() as this might
change behaviour if Foo does not have a user-defined constructor. For example,
WrapUnique(new int) creates an unitialised integer, but MakeUnique<int>()
creates an integer initialised to 0.

git cl format has been been run over the CL. Spot-checking has uncovered no
cases of mis-formatting.

  BUG=637812

Review-Url: https://codereview.chromium.org/2252293003
Cr-Original-Commit-Position: refs/heads/master@{#415572}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 8fcde24af7919904a7f2f9b9d452da8c575095db
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index 72525e9..acb8077 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -459,7 +459,7 @@
 
   if (json) {
     // Convert all targets/configs to JSON, serialize and print them
-    auto res = base::WrapUnique(new base::DictionaryValue());
+    auto res = base::MakeUnique<base::DictionaryValue>();
     if (!target_matches.empty()) {
       for (const auto* target : target_matches) {
         res->Set(target->label().GetUserVisibleName(
diff --git a/tools/gn/desc_builder.cc b/tools/gn/desc_builder.cc
index bc8f02a..aca148c 100644
--- a/tools/gn/desc_builder.cc
+++ b/tools/gn/desc_builder.cc
@@ -114,7 +114,7 @@
 
   template <typename T>
   ValuePtr RenderValue(const std::vector<T>& vector) {
-    auto res = base::WrapUnique(new base::ListValue());
+    auto res = base::MakeUnique<base::ListValue>();
     for (const auto& v : vector)
       res->Append(RenderValue(v));
 
@@ -181,7 +181,7 @@
       : BaseDescBuilder(what, false, false, false), config_(config) {}
 
   std::unique_ptr<base::DictionaryValue> BuildDescription() {
-    auto res = base::WrapUnique(new base::DictionaryValue());
+    auto res = base::MakeUnique<base::DictionaryValue>();
     const ConfigValues& values = config_->resolved_values();
 
     if (what_.empty())
@@ -190,7 +190,7 @@
           config_->label().GetToolchainLabel().GetUserVisibleName(false));
 
     if (what(variables::kConfigs) && !config_->configs().empty()) {
-      auto configs = base::WrapUnique(new base::ListValue());
+      auto configs = base::MakeUnique<base::ListValue>();
       FillInConfigVector(configs.get(), config_->configs().vector());
       res->Set(variables::kConfigs, std::move(configs));
     }
@@ -233,7 +233,7 @@
   ValuePtr render_config_value_array(
       const ConfigValues& values,
       const std::vector<T>& (ConfigValues::*getter)() const) {
-    auto res = base::WrapUnique(new base::ListValue());
+    auto res = base::MakeUnique<base::ListValue>();
 
     for (const T& cur : (values.*getter)())
       res->Append(RenderValue(cur));
@@ -254,7 +254,7 @@
       : BaseDescBuilder(what, all, tree, blame), target_(target) {}
 
   std::unique_ptr<base::DictionaryValue> BuildDescription() {
-    auto res = base::WrapUnique(new base::DictionaryValue());
+    auto res = base::MakeUnique<base::DictionaryValue>();
     bool is_binary_output = target_->IsBinary();
 
     if (what_.empty()) {
@@ -277,7 +277,7 @@
         res->SetBoolean(variables::kCheckIncludes, target_->check_includes());
 
       if (what(variables::kAllowCircularIncludesFrom)) {
-        auto labels = base::WrapUnique(new base::ListValue());
+        auto labels = base::MakeUnique<base::ListValue>();
         for (const auto& cur : target_->allow_circular_includes_from())
           labels->AppendString(cur.GetUserVisibleName(GetToolchainLabel()));
 
@@ -309,20 +309,20 @@
 
     if (is_binary_output && what(variables::kConfigs) &&
         !target_->configs().empty()) {
-      auto configs = base::WrapUnique(new base::ListValue());
+      auto configs = base::MakeUnique<base::ListValue>();
       FillInConfigVector(configs.get(), target_->configs().vector());
       res->Set(variables::kConfigs, std::move(configs));
     }
 
     if (what(variables::kPublicConfigs) && !target_->public_configs().empty()) {
-      auto configs = base::WrapUnique(new base::ListValue());
+      auto configs = base::MakeUnique<base::ListValue>();
       FillInConfigVector(configs.get(), target_->public_configs());
       res->Set(variables::kPublicConfigs, std::move(configs));
     }
 
     if (what(variables::kAllDependentConfigs) &&
         !target_->all_dependent_configs().empty()) {
-      auto configs = base::WrapUnique(new base::ListValue());
+      auto configs = base::MakeUnique<base::ListValue>();
       FillInConfigVector(configs.get(), target_->all_dependent_configs());
       res->Set(variables::kAllDependentConfigs, std::move(configs));
     }
@@ -335,7 +335,7 @@
                        target_->action_values().script().value());
 
       if (what(variables::kArgs)) {
-        auto args = base::WrapUnique(new base::ListValue());
+        auto args = base::MakeUnique<base::ListValue>();
         for (const auto& elem : target_->action_values().args().list())
           args->AppendString(elem.AsString());
 
@@ -405,7 +405,7 @@
     if (what(variables::kLibs)) {
       const OrderedSet<LibFile>& all_libs = target_->all_libs();
       if (!all_libs.empty()) {
-        auto libs = base::WrapUnique(new base::ListValue());
+        auto libs = base::MakeUnique<base::ListValue>();
         for (size_t i = 0; i < all_libs.size(); i++)
           libs->AppendString(all_libs[i].value());
         res->Set(variables::kLibs, std::move(libs));
@@ -415,7 +415,7 @@
     if (what(variables::kLibDirs)) {
       const OrderedSet<SourceDir>& all_lib_dirs = target_->all_lib_dirs();
       if (!all_lib_dirs.empty()) {
-        auto lib_dirs = base::WrapUnique(new base::ListValue());
+        auto lib_dirs = base::MakeUnique<base::ListValue>();
         for (size_t i = 0; i < all_lib_dirs.size(); i++)
           lib_dirs->AppendString(FormatSourceDir(all_lib_dirs[i]));
         res->Set(variables::kLibDirs, std::move(lib_dirs));
@@ -472,7 +472,7 @@
   }
 
   ValuePtr RenderDeps() {
-    auto res = base::WrapUnique(new base::ListValue());
+    auto res = base::MakeUnique<base::ListValue>();
 
     // Tree mode is separate.
     if (tree_) {
@@ -506,7 +506,7 @@
   }
 
   ValuePtr RenderRuntimeDeps() {
-    auto res = base::WrapUnique(new base::ListValue());
+    auto res = base::MakeUnique<base::ListValue>();
 
     const Target* previous_from = NULL;
     for (const auto& pair : ComputeRuntimeDeps(target_)) {
@@ -532,12 +532,12 @@
   }
 
   void FillInSourceOutputs(base::DictionaryValue* res) {
-    auto dict = base::WrapUnique(new base::DictionaryValue());
+    auto dict = base::MakeUnique<base::DictionaryValue>();
     for (const auto& source : target_->sources()) {
       std::vector<OutputFile> outputs;
       Toolchain::ToolType tool_type = Toolchain::TYPE_NONE;
       if (target_->GetOutputFilesForSource(source, &tool_type, &outputs)) {
-        auto list = base::WrapUnique(new base::ListValue());
+        auto list = base::MakeUnique<base::ListValue>();
         for (const auto& output : outputs)
           list->AppendString(output.value());
 
@@ -548,7 +548,7 @@
   }
 
   void FillInBundle(base::DictionaryValue* res) {
-    auto data = base::WrapUnique(new base::DictionaryValue());
+    auto data = base::MakeUnique<base::DictionaryValue>();
     const BundleData& bundle_data = target_->bundle_data();
     const Settings* settings = target_->settings();
     BundleData::SourceFiles sources;
@@ -562,7 +562,7 @@
     data->Set("plugins_dir", RenderValue(bundle_data.plugins_dir()));
     data->SetString("product_type", bundle_data.product_type());
 
-    auto deps = base::WrapUnique(new base::ListValue());
+    auto deps = base::MakeUnique<base::ListValue>();
     for (const auto* dep : bundle_data.bundle_deps())
       deps->AppendString(dep->label().GetUserVisibleName(GetToolchainLabel()));
 
@@ -572,7 +572,7 @@
 
   void FillInOutputs(base::DictionaryValue* res) {
     if (target_->output_type() == Target::ACTION) {
-      auto list = base::WrapUnique(new base::ListValue());
+      auto list = base::MakeUnique<base::ListValue>();
       for (const auto& elem : target_->action_values().outputs().list())
         list->AppendString(elem.AsString());
 
@@ -586,7 +586,7 @@
                target_->output_type() == Target::COPY_FILES) {
       const SubstitutionList& outputs = target_->action_values().outputs();
       if (!outputs.required_types().empty()) {
-        auto patterns = base::WrapUnique(new base::ListValue());
+        auto patterns = base::MakeUnique<base::ListValue>();
         for (const auto& elem : outputs.list())
           patterns->AppendString(elem.AsString());
 
@@ -619,7 +619,7 @@
   template <class T>
   ValuePtr RenderConfigValues(const std::vector<T>& (ConfigValues::*getter)()
                                   const) {
-    auto res = base::WrapUnique(new base::ListValue());
+    auto res = base::MakeUnique<base::ListValue>();
     for (ConfigValuesIterator iter(target_); !iter.done(); iter.Next()) {
       const std::vector<T>& vec = (iter.cur().*getter)();
 
@@ -653,7 +653,7 @@
         // Indent string values in blame mode
         if (blame_ && rendered->GetAsString(&str)) {
           str = "  " + str;
-          rendered = base::WrapUnique(new base::StringValue(str));
+          rendered = base::MakeUnique<base::StringValue>(str);
         }
         res->Append(std::move(rendered));
       }
diff --git a/tools/gn/functions_unittest.cc b/tools/gn/functions_unittest.cc
index c6681bf..7156747 100644
--- a/tools/gn/functions_unittest.cc
+++ b/tools/gn/functions_unittest.cc
@@ -48,8 +48,7 @@
   // "defined(def.foo)" to see if foo is defined on the def scope.
   std::unique_ptr<AccessorNode> undef_accessor(new AccessorNode);
   undef_accessor->set_base(defined_token);
-  undef_accessor->set_member(
-      base::WrapUnique(new IdentifierNode(undefined_token)));
+  undef_accessor->set_member(base::MakeUnique<IdentifierNode>(undefined_token));
   ListNode args_list_accessor_defined;
   args_list_accessor_defined.append_item(std::move(undef_accessor));
   result = functions::RunDefined(setup.scope(), &function_call,
diff --git a/tools/gn/json_project_writer.cc b/tools/gn/json_project_writer.cc
index dc375a6..67c21ee 100644
--- a/tools/gn/json_project_writer.cc
+++ b/tools/gn/json_project_writer.cc
@@ -86,7 +86,7 @@
                        std::vector<const Target*>& all_targets) {
   Label default_toolchain_label;
 
-  auto targets = base::WrapUnique(new base::DictionaryValue());
+  auto targets = base::MakeUnique<base::DictionaryValue>();
   for (const auto* target : all_targets) {
     if (default_toolchain_label.is_null())
       default_toolchain_label = target->settings()->default_toolchain_label();
@@ -104,13 +104,13 @@
                  std::move(description));
   }
 
-  auto settings = base::WrapUnique(new base::DictionaryValue());
+  auto settings = base::MakeUnique<base::DictionaryValue>();
   settings->SetString("root_path", build_settings->root_path_utf8());
   settings->SetString("build_dir", build_settings->build_dir().value());
   settings->SetString("default_toolchain",
                       default_toolchain_label.GetUserVisibleName(false));
 
-  auto output = base::WrapUnique(new base::DictionaryValue());
+  auto output = base::MakeUnique<base::DictionaryValue>();
   output->Set("targets", std::move(targets));
   output->Set("build_settings", std::move(settings));
 
diff --git a/tools/gn/parser.cc b/tools/gn/parser.cc
index 76d4580..5fe9506 100644
--- a/tools/gn/parser.cc
+++ b/tools/gn/parser.cc
@@ -462,7 +462,7 @@
 }
 
 std::unique_ptr<ParseNode> Parser::Literal(const Token& token) {
-  return base::WrapUnique(new LiteralNode(token));
+  return base::MakeUnique<LiteralNode>(token);
 }
 
 std::unique_ptr<ParseNode> Parser::Name(const Token& token) {
@@ -529,7 +529,7 @@
     const Token& token) {
   std::unique_ptr<ListNode> list(new ListNode);
   list->set_begin_token(token);
-  list->set_end(base::WrapUnique(new EndNode(token)));
+  list->set_end(base::MakeUnique<EndNode>(token));
   std::unique_ptr<BlockNode> block;
   bool has_arg = false;
   if (LookAhead(Token::LEFT_PAREN)) {
@@ -669,7 +669,7 @@
     *err_ = Err(cur_token(), "Trailing comma");
     return std::unique_ptr<ListNode>();
   }
-  list->set_end(base::WrapUnique(new EndNode(cur_token())));
+  list->set_end(base::MakeUnique<EndNode>(cur_token()));
   return list;
 }
 
@@ -728,7 +728,7 @@
 
   for (;;) {
     if (LookAhead(Token::RIGHT_BRACE)) {
-      block->set_end(base::WrapUnique(new EndNode(Consume())));
+      block->set_end(base::MakeUnique<EndNode>(Consume()));
       break;
     }
 
diff --git a/tools/gn/xcode_object.cc b/tools/gn/xcode_object.cc
index ef24e7d..dc5bfb8 100644
--- a/tools/gn/xcode_object.cc
+++ b/tools/gn/xcode_object.cc
@@ -317,7 +317,7 @@
       name_(name) {
   if (!shell_script.empty()) {
     build_phases_.push_back(
-        base::WrapUnique(new PBXShellScriptBuildPhase(name, shell_script)));
+        base::MakeUnique<PBXShellScriptBuildPhase>(name, shell_script));
   }
 }
 
@@ -475,8 +475,8 @@
   DCHECK(!source_path.empty());
   std::string::size_type sep = source_path.find("/");
   if (sep == std::string::npos) {
-    children_.push_back(base::WrapUnique(
-        new PBXFileReference(std::string(), source_path, std::string())));
+    children_.push_back(base::MakeUnique<PBXFileReference>(
+        std::string(), source_path, std::string()));
     return static_cast<PBXFileReference*>(children_.back().get());
   }
 
@@ -563,7 +563,7 @@
     const PBXFileReference* file_reference) {
   DCHECK(file_reference);
   source_build_phase_->AddBuildFile(
-      base::WrapUnique(new PBXBuildFile(file_reference, source_build_phase_)));
+      base::MakeUnique<PBXBuildFile>(file_reference, source_build_phase_));
 }
 
 PBXObjectClass PBXNativeTarget::Class() const {
@@ -596,11 +596,11 @@
   attributes_["BuildIndependentTargetsInParallel"] = "YES";
 
   main_group_.reset(new PBXGroup);
-  sources_ = static_cast<PBXGroup*>(main_group_->AddChild(
-      base::WrapUnique(new PBXGroup(source_path, "Source"))));
+  sources_ = static_cast<PBXGroup*>(
+      main_group_->AddChild(base::MakeUnique<PBXGroup>(source_path, "Source")));
   products_ = static_cast<PBXGroup*>(main_group_->AddChild(
-      base::WrapUnique(new PBXGroup(std::string(), "Product"))));
-  main_group_->AddChild(base::WrapUnique(new PBXGroup(std::string(), "Build")));
+      base::MakeUnique<PBXGroup>(std::string(), "Product")));
+  main_group_->AddChild(base::MakeUnique<PBXGroup>(std::string(), "Build"));
 
   configurations_.reset(new XCConfigurationList(config_name, attributes, this));
 }
@@ -620,13 +620,13 @@
     attributes["PRODUCT_NAME"] = name_;
 
     PBXFileReference* product_reference = static_cast<PBXFileReference*>(
-        products_->AddChild(base::WrapUnique(new PBXFileReference(
-            std::string(), name_, "compiled.mach-o.executable"))));
+        products_->AddChild(base::MakeUnique<PBXFileReference>(
+            std::string(), name_, "compiled.mach-o.executable")));
 
     const char product_type[] = "com.apple.product-type.tool";
-    targets_.push_back(base::WrapUnique(
-        new PBXNativeTarget(name_, std::string(), config_name_, attributes,
-                            product_type, name_, product_reference)));
+    targets_.push_back(base::MakeUnique<PBXNativeTarget>(
+        name_, std::string(), config_name_, attributes, product_type, name_,
+        product_reference));
     target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get());
   }
 
@@ -641,8 +641,8 @@
   attributes["CONFIGURATION_BUILD_DIR"] = ".";
   attributes["PRODUCT_NAME"] = name;
 
-  targets_.push_back(base::WrapUnique(
-      new PBXAggregateTarget(name, shell_script, config_name_, attributes)));
+  targets_.push_back(base::MakeUnique<PBXAggregateTarget>(
+      name, shell_script, config_name_, attributes));
 }
 
 void PBXProject::AddNativeTarget(const std::string& name,
@@ -651,10 +651,10 @@
                                  const std::string& output_type,
                                  const std::string& shell_script) {
   base::StringPiece ext = FindExtension(&output_name);
-  PBXFileReference* product =
-      static_cast<PBXFileReference*>(products_->AddChild(base::WrapUnique(
-          new PBXFileReference(std::string(), output_name,
-                               type.empty() ? GetSourceType(ext) : type))));
+  PBXFileReference* product = static_cast<PBXFileReference*>(
+      products_->AddChild(base::MakeUnique<PBXFileReference>(
+          std::string(), output_name,
+          type.empty() ? GetSourceType(ext) : type)));
 
   size_t ext_offset = FindExtensionOffset(output_name);
   std::string product_name = ext_offset != std::string::npos
@@ -666,9 +666,9 @@
   attributes["CONFIGURATION_BUILD_DIR"] = ".";
   attributes["PRODUCT_NAME"] = product_name;
 
-  targets_.push_back(base::WrapUnique(
-      new PBXNativeTarget(name, shell_script, config_name_, attributes,
-                          output_type, product_name, product)));
+  targets_.push_back(base::MakeUnique<PBXNativeTarget>(
+      name, shell_script, config_name_, attributes, output_type, product_name,
+      product));
 }
 
 void PBXProject::SetProjectDirPath(const std::string& project_dir_path) {
@@ -831,7 +831,7 @@
     : owner_reference_(owner_reference) {
   DCHECK(owner_reference_);
   configurations_.push_back(
-      base::WrapUnique(new XCBuildConfiguration(name, attributes)));
+      base::MakeUnique<XCBuildConfiguration>(name, attributes));
 }
 
 XCConfigurationList::~XCConfigurationList() {}