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/privet/cloud_delegate.cc b/buffet/privet/cloud_delegate.cc
index 95b0aff..83c7bbb 100644
--- a/buffet/privet/cloud_delegate.cc
+++ b/buffet/privet/cloud_delegate.cc
@@ -144,7 +144,7 @@
     if (!is_gcd_setup_enabled_) {
       chromeos::Error::AddTo(error, FROM_HERE, errors::kDomain,
                              errors::kSetupUnavailable,
-                             "GCD setup unavailible");
+                             "GCD setup unavailable");
       return false;
     }
     if (setup_state_.IsStatusEqual(SetupState::kInProgress)) {
diff --git a/buffet/privet/cloud_delegate.h b/buffet/privet/cloud_delegate.h
index 39f3722..95bcca8 100644
--- a/buffet/privet/cloud_delegate.h
+++ b/buffet/privet/cloud_delegate.h
@@ -139,7 +139,7 @@
       buffet::StateManager* state_manager);
 
  private:
-  ObserverList<Observer> observer_list_;
+  base::ObserverList<Observer> observer_list_;
 };
 
 }  // namespace privetd
diff --git a/buffet/privet/privet_handler_unittest.cc b/buffet/privet/privet_handler_unittest.cc
index bf883bf..2ae76d9 100644
--- a/buffet/privet/privet_handler_unittest.cc
+++ b/buffet/privet/privet_handler_unittest.cc
@@ -37,8 +37,10 @@
   base::ReplaceChars(json, "'", "\"", &json);
   int error = 0;
   std::string message;
-  std::unique_ptr<base::Value> value(base::JSONReader::ReadAndReturnError(
-      json, base::JSON_PARSE_RFC, &error, &message));
+  std::unique_ptr<base::Value> value(
+      base::JSONReader::ReadAndReturnError(json, base::JSON_PARSE_RFC, &error,
+                                           &message)
+          .release());
   EXPECT_TRUE(value.get()) << "\nError: " << message << "\n" << json;
   base::DictionaryValue* dictionary_ptr = nullptr;
   if (value->GetAsDictionary(&dictionary_ptr))
diff --git a/buffet/privet/privet_manager.cc b/buffet/privet/privet_manager.cc
index 28971ae..7b23326 100644
--- a/buffet/privet/privet_manager.cc
+++ b/buffet/privet/privet_manager.cc
@@ -187,7 +187,7 @@
     std::string content_type = chromeos::mime::RemoveParameters(
         GetFirstHeader(*request, chromeos::http::request_header::kContentType));
     if (content_type == chromeos::mime::application::kJson) {
-      value.reset(base::JSONReader::Read(data));
+      value.reset(base::JSONReader::Read(data).release());
       if (value)
         value->GetAsDictionary(&dictionary);
     }