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/buffet_client.cc b/buffet/buffet_client.cc
index ab8f189..8c9e075 100644
--- a/buffet/buffet_client.cc
+++ b/buffet/buffet_client.cc
@@ -337,8 +337,10 @@
ManagerProxy* manager_proxy) {
ErrorPtr error;
std::string error_message;
- std::unique_ptr<base::Value> json(base::JSONReader::ReadAndReturnError(
- value, base::JSON_PARSE_RFC, nullptr, &error_message));
+ std::unique_ptr<base::Value> json(
+ base::JSONReader::ReadAndReturnError(value, base::JSON_PARSE_RFC,
+ nullptr, &error_message)
+ .release());
if (!json) {
Error::AddTo(&error, FROM_HERE, chromeos::errors::json::kDomain,
chromeos::errors::json::kParseError, error_message);
diff --git a/buffet/commands/command_manager_unittest.cc b/buffet/commands/command_manager_unittest.cc
index f270655..81c2a5b 100644
--- a/buffet/commands/command_manager_unittest.cc
+++ b/buffet/commands/command_manager_unittest.cc
@@ -56,7 +56,7 @@
static void SaveJsonToFile(const base::DictionaryValue& dict,
const base::FilePath& file_path) {
std::string json;
- base::JSONWriter::Write(&dict, &json);
+ base::JSONWriter::Write(dict, &json);
const int bytes_to_write = static_cast<int>(json.size());
CHECK_EQ(bytes_to_write, WriteFile(file_path, json.data(), bytes_to_write));
}
diff --git a/buffet/commands/prop_constraints.cc b/buffet/commands/prop_constraints.cc
index f773290..1fd43e6 100644
--- a/buffet/commands/prop_constraints.cc
+++ b/buffet/commands/prop_constraints.cc
@@ -19,7 +19,7 @@
std::string result;
auto json = value.ToJson(nullptr);
if (json)
- base::JSONWriter::Write(json.get(), &result);
+ base::JSONWriter::Write(*json, &result);
return result;
}
diff --git a/buffet/commands/schema_utils.cc b/buffet/commands/schema_utils.cc
index 47b757f..efb758e 100644
--- a/buffet/commands/schema_utils.cc
+++ b/buffet/commands/schema_utils.cc
@@ -21,7 +21,7 @@
const std::string& expected_type,
chromeos::ErrorPtr* error) {
std::string value_as_string;
- base::JSONWriter::Write(value_in, &value_as_string);
+ base::JSONWriter::Write(*value_in, &value_as_string);
chromeos::Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
errors::commands::kTypeMismatch,
"Unable to convert value %s into %s",
@@ -255,14 +255,14 @@
std::string ToString(const native_types::Object& obj) {
auto val = TypedValueToJson(obj, nullptr);
std::string str;
- base::JSONWriter::Write(val.get(), &str);
+ base::JSONWriter::Write(*val, &str);
return str;
}
std::string ToString(const native_types::Array& arr) {
auto val = TypedValueToJson(arr, nullptr);
std::string str;
- base::JSONWriter::Write(val.get(), &str);
+ base::JSONWriter::Write(*val, &str);
return str;
}
diff --git a/buffet/commands/unittest_utils.cc b/buffet/commands/unittest_utils.cc
index be4d4e7..df07289 100644
--- a/buffet/commands/unittest_utils.cc
+++ b/buffet/commands/unittest_utils.cc
@@ -16,8 +16,10 @@
std::replace(json2.begin(), json2.end(), '\'', '"');
int error = 0;
std::string message;
- std::unique_ptr<base::Value> value{base::JSONReader::ReadAndReturnError(
- json2, base::JSON_PARSE_RFC, &error, &message)};
+ std::unique_ptr<base::Value> value{
+ base::JSONReader::ReadAndReturnError(json2, base::JSON_PARSE_RFC, &error,
+ &message)
+ .release()};
CHECK(value) << "Failed to load JSON: " << message << ", " << json;
return value;
}
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index cb0cb3e..279e2b9 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -579,7 +579,7 @@
std::string data;
if (body)
- base::JSONWriter::Write(body, &data);
+ base::JSONWriter::Write(*body, &data);
const std::string mime_type{chromeos::mime::AppendParameter(
chromeos::mime::application::kJson,
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);
}
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);
}
diff --git a/buffet/storage_impls.cc b/buffet/storage_impls.cc
index d030ecb..d3242b7 100644
--- a/buffet/storage_impls.cc
+++ b/buffet/storage_impls.cc
@@ -27,7 +27,7 @@
bool FileStorage::Save(const base::DictionaryValue& config) {
std::string json;
base::JSONWriter::WriteWithOptions(
- &config, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
+ config, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
return base::ImportantFileWriter::WriteFileAtomically(file_path_, json);
}
diff --git a/buffet/test_daemon/main.cc b/buffet/test_daemon/main.cc
index 64c0c00..eeb0caf 100644
--- a/buffet/test_daemon/main.cc
+++ b/buffet/test_daemon/main.cc
@@ -66,7 +66,7 @@
std::string DictionaryToString(const chromeos::VariantDictionary& dictionary) {
std::unique_ptr<base::DictionaryValue> json{DictionaryToJson(dictionary)};
std::string str;
- base::JSONWriter::Write(json.get(), &str);
+ base::JSONWriter::Write(*json, &str);
return str;
}
diff --git a/buffet/utils.cc b/buffet/utils.cc
index 707b19d..33fc292 100644
--- a/buffet/utils.cc
+++ b/buffet/utils.cc
@@ -11,6 +11,7 @@
#include <sys/types.h>
#include <unistd.h>
+#include <base/bind_helpers.h>
#include <base/files/file_util.h>
#include <base/json/json_reader.h>
#include <chromeos/errors/error_codes.h>
@@ -56,7 +57,7 @@
chromeos::ErrorPtr* error) {
std::unique_ptr<base::DictionaryValue> result;
std::string error_message;
- base::Value* value = base::JSONReader::ReadAndReturnError(
+ auto value = base::JSONReader::ReadAndReturnError(
json_string, base::JSON_PARSE_RFC, nullptr, &error_message);
if (!value) {
chromeos::Error::AddToPrintf(error, FROM_HERE,
@@ -69,13 +70,15 @@
}
base::DictionaryValue* dict_value = nullptr;
if (!value->GetAsDictionary(&dict_value)) {
- delete value;
chromeos::Error::AddToPrintf(error, FROM_HERE,
chromeos::errors::json::kDomain,
chromeos::errors::json::kObjectExpected,
"JSON string '%s' is not a JSON object",
LimitString(json_string, kMaxStrLen).c_str());
return result;
+ } else {
+ // |value| is now owned by |dict_value|.
+ base::IgnoreResult(value.release());
}
result.reset(dict_value);
return result;