platform2: Fix issues with new version of libchrome

libchrome r334380 has the following breaking changes that need to be fixed:
- base::JSONWriter::Write() and base::JSONWriter::WriteWithOptions() take
  "const base::Value&" instead of "const base::Value*"
- base::JSONReader::Read() and base::JSONReader::ReadAndReturnError()
  return a scoped_ptr<base::Value> instead of base::Value*
- base/safe_strerror_posix.h is moved to base/posix/safe_strerror.h
- safe_strerror() is now in "base" namespace
- StartsWithASCII(), EndsWith(), StringToUpperASCII(), LowerCaseEqualsASCII()
  are now in "base" namespace
- ObserverList<T> is now in "base" namespace
- base::PrintTo(base::FilePath) used in gtest is now moved to libchrome-test
  library and as such, unit test runners need to link to this library now.
- crypto::RSAPrivateKey::CreateSensitive() is now removed from //crypto, so
  some of tests in chromeos-login that used that function had to be changed
  to use crypto::GenerateRSAKeyPairNSS() directly.
- UnixDomanSocket class is now in "base" namespace
- Pickle class is now in "base" namespace

BUG=chromium:496469
TEST=`./build_packages`
CQ-DEPEND=CL:277662

Change-Id: I36e5fbf2e36a92068873ffbd44020c862a3ed9e3
Reviewed-on: https://chromium-review.googlesource.com/277671
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Trybot-Ready: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 86f6988..6921f47 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -153,8 +153,8 @@
   }
 
   std::string device_info_str;
-  base::JSONWriter::WriteWithOptions(device_info.get(),
-      base::JSONWriter::OPTIONS_PRETTY_PRINT, &device_info_str);
+  base::JSONWriter::WriteWithOptions(
+      *device_info, base::JSONWriter::OPTIONS_PRETTY_PRINT, &device_info_str);
   response->Return(device_info_str);
 }
 
@@ -191,7 +191,7 @@
   if (!json)
     return false;
   base::JSONWriter::WriteWithOptions(
-      json.get(), base::JSONWriter::OPTIONS_PRETTY_PRINT, state);
+      *json, base::JSONWriter::OPTIONS_PRETTY_PRINT, state);
   return true;
 }
 
@@ -199,8 +199,10 @@
                          const std::string& json_command,
                          const std::string& in_user_role) {
   std::string error_message;
-  std::unique_ptr<base::Value> value(base::JSONReader::ReadAndReturnError(
-      json_command, base::JSON_PARSE_RFC, nullptr, &error_message));
+  std::unique_ptr<base::Value> value(
+      base::JSONReader::ReadAndReturnError(json_command, base::JSON_PARSE_RFC,
+                                           nullptr, &error_message)
+          .release());
   const base::DictionaryValue* command{nullptr};
   if (!value || !value->GetAsDictionary(&command)) {
     return response->ReplyWithError(FROM_HERE, chromeos::errors::json::kDomain,
@@ -229,8 +231,8 @@
     return;
   }
   std::string command_str;
-  base::JSONWriter::WriteWithOptions(command->ToJson().get(),
-      base::JSONWriter::OPTIONS_PRETTY_PRINT, &command_str);
+  base::JSONWriter::WriteWithOptions(
+      *command->ToJson(), base::JSONWriter::OPTIONS_PRETTY_PRINT, &command_str);
   response->Return(command_str);
 }
 
@@ -316,8 +318,8 @@
       }, true, nullptr);
   CHECK(commands);
   std::string json;
-  base::JSONWriter::WriteWithOptions(commands.get(),
-      base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
+  base::JSONWriter::WriteWithOptions(
+      *commands, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
   dbus_adaptor_.SetCommandDefs(json);
 }
 
@@ -326,7 +328,7 @@
   CHECK(state);
   std::string json;
   base::JSONWriter::WriteWithOptions(
-      state.get(), base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
+      *state, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
   dbus_adaptor_.SetState(json);
 }