huddly_updater: base::Value refactor
base::{Dictionary,List}Value will be replaced by new base::Value APIs.
BUG=chromium:1099111
TEST=FEATURES=test emerge-endeavour huddly-updater
Change-Id: I7e0cf65a8ce8330a18ac32fed1e5ea71d92792e7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/huddly-updater/+/3121305
Tested-by: Grace Cham <hscham@chromium.org>
Commit-Queue: Grace Cham <hscham@chromium.org>
Reviewed-by: Kyle Williams <kdgwill@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
diff --git a/src/huddly_go/manifest.cc b/src/huddly_go/manifest.cc
index 2155ea2..030a509 100644
--- a/src/huddly_go/manifest.cc
+++ b/src/huddly_go/manifest.cc
@@ -45,14 +45,13 @@
return false;
}
- base::DictionaryValue* root_dic;
- if (!(root->GetAsDictionary(&root_dic))) {
+ if (!root->is_dict()) {
std::cout << "..Failed to read as dictionary from file: " << path_.value()
<< "\n";
return false;
}
- manifest_ver_ = ParseManifestVersion(root_dic);
+ manifest_ver_ = ParseManifestVersion(*root);
if (!IsCompatible(manifest_ver_)) {
std::cout << "..ParseManifestDict failed: manifest version "
<< manifest_ver_
@@ -61,28 +60,23 @@
}
// Parse strings: Upon internal failures, empty strings are returned.
- ParseHardwareRev(root_dic, &hw_rev_);
- ParseFirmwareFileVersions(root_dic, &app_ver_, &boot_ver_);
+ ParseHardwareRev(*root, &hw_rev_);
+ ParseFirmwareFileVersions(*root, &app_ver_, &boot_ver_);
return true;
}
-int Manifest::ParseManifestVersion(base::DictionaryValue* dic) {
- if (!dic) {
- std::cout << "..faield to parse manifest_version: null dic. Default to "
- << kManifestVersionUnknown << "\n";
- return kManifestVersionUnknown;
- }
-
+int Manifest::ParseManifestVersion(const base::Value& dic) {
+ CHECK(dic.is_dict());
// key: manifest_version
- int manifest_version;
- if (!dic->GetInteger("manifest_version", &manifest_version)) {
+ auto manifest_version = dic.FindIntKey("manifest_version");
+ if (!manifest_version.has_value()) {
std::cout << "..failed to parse manifest_version. Default to "
<< kManifestVersionUnknown << "\n";
return kManifestVersionUnknown;
}
- return manifest_version;
+ return *manifest_version;
}
bool Manifest::IsCompatible(int manifest_ver) {
@@ -99,78 +93,67 @@
return result;
}
-void Manifest::ParseFirmwareFileVersions(base::DictionaryValue* dic,
+void Manifest::ParseFirmwareFileVersions(const base::Value& dic,
std::string* app_ver,
std::string* boot_ver) {
+ CHECK(dic.is_dict());
*app_ver = "";
*boot_ver = "";
- if (!dic) {
- std::cout << "..ParseFirmwareFileVersions failed: null dic";
- return;
- }
-
// key: files
- base::Value* files_list = dic->FindListKey("files");
+ const base::Value* files_list = dic.FindListKey("files");
if (!files_list) {
std::cout << "failed to parse in finding 'files' key"
<< "\n";
return;
}
- for (auto& elem : files_list->GetList()) {
- base::DictionaryValue* dic = nullptr;
- if (!elem.GetAsDictionary(&dic)) {
+ for (const auto& elem : files_list->GetList()) {
+ if (!elem.is_dict()) {
std::cout << "failed to parse an files element as dictionary"
<< "\n";
continue;
}
- std::string type;
- if (!dic->GetString("type", &type)) {
+ const std::string* type = elem.FindStringKey("type");
+ if (!type) {
std::cout << "failed to parse type as string";
continue;
}
- base::DictionaryValue* version_dic = nullptr;
- if (!dic->GetDictionary("version", &version_dic)) {
+ const base::Value* version_dic = elem.FindDictKey("version");
+ if (!version_dic) {
std::cout << "failed to parse version as dictionary";
continue;
}
- base::ListValue* numerical_list = nullptr;
- if (!version_dic->GetList("numerical", &numerical_list)) {
+ const base::Value* numerical_list = version_dic->FindListKey("numerical");
+ if (!numerical_list) {
std::cout << "failed to parse numerical as list";
continue;
}
- std::string numerical_str = ListToStr(numerical_list, ".");
+ std::string numerical_str = ListToStr(*numerical_list, ".");
- if (type == "mv2_boot") {
+ if (*type == "mv2_boot") {
*boot_ver = numerical_str;
- } else if (type == "mv2_app") {
+ } else if (*type == "mv2_app") {
*app_ver = numerical_str;
}
}
}
-std::string Manifest::ListToStr(base::ListValue* list_val,
+std::string Manifest::ListToStr(const base::Value& list_val,
const std::string& separator) {
- if (!list_val) {
- std::cout << "ListToStr: null list value"
- << "\n";
- return "";
- }
-
+ CHECK(list_val.is_list());
std::string result = "";
- for (auto& elem : list_val->GetList()) {
- int val;
- if (!elem.GetAsInteger(&val)) {
+ for (const auto& val : list_val.GetList()) {
+ if (!val.is_int()) {
std::cout << "failed to parse value as integer from list value"
<< "\n";
continue;
}
- result.append(std::to_string(val));
+ result.append(std::to_string(val.GetInt()));
result.append(separator);
}
result.pop_back(); // Drop the last separator;
@@ -178,39 +161,33 @@
return result;
}
-void Manifest::ParseHardwareRev(base::DictionaryValue* dic,
+void Manifest::ParseHardwareRev(const base::Value& dic,
std::string* hw_rev) {
*hw_rev = "";
- if (!dic) {
- std::cout << "..ParseHardwareRev: null dic"
- << "\n";
- return;
- }
// key: compatible_hw
- base::Value* compatible_hw_list = dic->FindListKey("compatible_hw");
+ const base::Value* compatible_hw_list = dic.FindListKey("compatible_hw");
if (!compatible_hw_list) {
std::cout << "failed to parse in finding 'compatible_hw' key'"
<< "\n";
return; // returning empty string |hw_rev|.
}
- for (auto& elem : compatible_hw_list->GetList()) {
- base::DictionaryValue* compatible_hw_dic = nullptr;
- if (!elem.GetAsDictionary(&compatible_hw_dic)) {
+ for (const auto& compatible_hw_dic : compatible_hw_list->GetList()) {
+ if (!compatible_hw_dic.is_dict()) {
std::cout << "failed to parse 'compatible_hw' element as dictionary"
<< "\n";
continue;
}
- base::ListValue* rev_list = nullptr;
- if (!compatible_hw_dic->GetList("hwrevs", &rev_list)) {
+ const base::Value* rev_list = compatible_hw_dic.FindListKey("hwrevs");
+ if (!rev_list) {
std::cout << "failed to parse hwrevs as list"
<< "\n";
continue;
}
- *hw_rev = ListToStr(rev_list, ",");
+ *hw_rev = ListToStr(*rev_list, ",");
}
}
diff --git a/src/huddly_go/manifest.h b/src/huddly_go/manifest.h
index 420e207..9ec24d9 100644
--- a/src/huddly_go/manifest.h
+++ b/src/huddly_go/manifest.h
@@ -19,15 +19,15 @@
~Manifest() = default;
bool ParseFile();
- int ParseManifestVersion(base::DictionaryValue* dic);
+ int ParseManifestVersion(const base::Value& dic);
bool IsCompatible(int manifest_ver);
- void ParseHardwareRev(base::DictionaryValue* dic, std::string* hw_rev);
- void ParseFirmwareFileVersions(base::DictionaryValue* dic,
+ void ParseHardwareRev(const base::Value& dic, std::string* hw_rev);
+ void ParseFirmwareFileVersions(const base::Value& dic,
std::string* app_ver,
std::string* boot_ver);
std::string GetFileContent(const base::FilePath& path);
- std::string ListToStr(base::ListValue* list_val,
+ std::string ListToStr(const base::Value& list_val,
const std::string& separator);
void Dump(); // show the result of parsing.