Commit 300872bc authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Remove JSONReader::ReadDeprecated() usage in printing code.

Bug: 925165
Change-Id: Ibf858e7112066876c996fada5b7518ad88c81562
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1895881Reviewed-by: default avatarLuum Habtemariam <luum@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712407}
parent e709bdb1
...@@ -112,10 +112,10 @@ class EnterprisePrintersProviderImpl : public EnterprisePrintersProvider, ...@@ -112,10 +112,10 @@ class EnterprisePrintersProviderImpl : public EnterprisePrintersProvider,
std::vector<std::string> data = std::vector<std::string> data =
FromPrefs(prefs::kRecommendedNativePrinters); FromPrefs(prefs::kRecommendedNativePrinters);
for (const auto& printer_json : data) { for (const auto& printer_json : data) {
std::unique_ptr<base::DictionaryValue> printer_dictionary = base::Optional<base::Value> printer_dictionary = base::JSONReader::Read(
base::DictionaryValue::From(base::JSONReader::ReadDeprecated( printer_json, base::JSON_ALLOW_TRAILING_COMMAS);
printer_json, base::JSON_ALLOW_TRAILING_COMMAS)); if (!printer_dictionary.has_value() ||
if (!printer_dictionary) { !printer_dictionary.value().is_dict()) {
LOG(WARNING) << "Ignoring invalid printer. Invalid JSON object: " LOG(WARNING) << "Ignoring invalid printer. Invalid JSON object: "
<< printer_json; << printer_json;
continue; continue;
...@@ -125,15 +125,17 @@ class EnterprisePrintersProviderImpl : public EnterprisePrintersProvider, ...@@ -125,15 +125,17 @@ class EnterprisePrintersProviderImpl : public EnterprisePrintersProvider,
// unique so we'll hash the record. This will not collide with the // unique so we'll hash the record. This will not collide with the
// UUIDs generated for user entries. // UUIDs generated for user entries.
std::string id = base::MD5String(printer_json); std::string id = base::MD5String(printer_json);
printer_dictionary->SetString(kPrinterId, id); printer_dictionary.value().SetStringKey(kPrinterId, id);
auto new_printer = RecommendedPrinterToPrinter(*printer_dictionary); auto new_printer = RecommendedPrinterToPrinter(
base::Value::AsDictionaryValue(printer_dictionary.value()));
if (!new_printer) { if (!new_printer) {
LOG(WARNING) << "Recommended printer is malformed."; LOG(WARNING) << "Recommended printer is malformed.";
continue; continue;
} }
if (!recommended_printers_.insert({id, *new_printer}).second) { bool inserted = recommended_printers_.insert({id, *new_printer}).second;
if (!inserted) {
// Printer is already in the list. // Printer is already in the list.
LOG(WARNING) << "Duplicate printer ignored: " << id; LOG(WARNING) << "Duplicate printer ignored: " << id;
continue; continue;
......
...@@ -530,10 +530,9 @@ bool PrintSystemCUPS::ValidatePrintTicket( ...@@ -530,10 +530,9 @@ bool PrintSystemCUPS::ValidatePrintTicket(
const std::string& print_ticket_data, const std::string& print_ticket_data,
const std::string& print_ticket_mime_type) { const std::string& print_ticket_mime_type) {
DCHECK(initialized_); DCHECK(initialized_);
std::unique_ptr<base::DictionaryValue> ticket_value( base::Optional<base::Value> ticket =
base::DictionaryValue::From( base::JSONReader::Read(print_ticket_data);
base::JSONReader::ReadDeprecated(print_ticket_data))); return ticket.has_value() && ticket.value().is_dict();
return !!ticket_value;
} }
// Print ticket on linux is a JSON string containing only one dictionary. // Print ticket on linux is a JSON string containing only one dictionary.
...@@ -541,19 +540,15 @@ bool PrintSystemCUPS::ParsePrintTicket( ...@@ -541,19 +540,15 @@ bool PrintSystemCUPS::ParsePrintTicket(
const std::string& print_ticket, const std::string& print_ticket,
std::map<std::string, std::string>* options) { std::map<std::string, std::string>* options) {
DCHECK(options); DCHECK(options);
std::unique_ptr<base::DictionaryValue> ticket_value( base::Optional<base::Value> ticket = base::JSONReader::Read(print_ticket);
base::DictionaryValue::From( if (!ticket.has_value() || !ticket.value().is_dict())
base::JSONReader::ReadDeprecated(print_ticket)));
if (!ticket_value)
return false; return false;
options->clear(); options->clear();
for (const auto& it : *ticket_value) { for (const auto& it : ticket.value().DictItems()) {
std::string value; if (it.second.is_string())
if (it.second->GetAsString(&value)) (*options)[it.first] = it.second.GetString();
(*options)[it.first] = value;
} }
return true; return true;
} }
......
...@@ -862,10 +862,9 @@ class PpdProviderImpl : public PpdProvider { ...@@ -862,10 +862,9 @@ class PpdProviderImpl : public PpdProvider {
FailQueuedMetadataResolutions(PpdProvider::SERVER_ERROR); FailQueuedMetadataResolutions(PpdProvider::SERVER_ERROR);
return; return;
} }
auto top_list =
base::ListValue::From(base::JSONReader::ReadDeprecated(contents));
if (top_list.get() == nullptr) { base::Optional<base::Value> top_list = base::JSONReader::Read(contents);
if (!top_list.has_value() || !top_list.value().is_list()) {
// We got something malformed back. // We got something malformed back.
FailQueuedMetadataResolutions(PpdProvider::INTERNAL_ERROR); FailQueuedMetadataResolutions(PpdProvider::INTERNAL_ERROR);
return; return;
...@@ -874,7 +873,7 @@ class PpdProviderImpl : public PpdProvider { ...@@ -874,7 +873,7 @@ class PpdProviderImpl : public PpdProvider {
// This should just be a simple list of locale strings. // This should just be a simple list of locale strings.
std::vector<std::string> available_locales; std::vector<std::string> available_locales;
bool found_en = false; bool found_en = false;
for (const base::Value& entry : *top_list) { for (const base::Value& entry : top_list.value().GetList()) {
std::string tmp; std::string tmp;
// Locales should have at *least* a two-character country code. 100 is an // Locales should have at *least* a two-character country code. 100 is an
// arbitrary upper bound for length to protect against extreme bogosity. // arbitrary upper bound for length to protect against extreme bogosity.
...@@ -1076,17 +1075,15 @@ class PpdProviderImpl : public PpdProvider { ...@@ -1076,17 +1075,15 @@ class PpdProviderImpl : public PpdProvider {
// [0x5926, "some othercanonical name"] // [0x5926, "some othercanonical name"]
// ] // ]
// So we scan through the response looking for our desired device id. // So we scan through the response looking for our desired device id.
auto top_list = base::Optional<base::Value> top_list = base::JSONReader::Read(buffer);
base::ListValue::From(base::JSONReader::ReadDeprecated(buffer)); if (!top_list.has_value() || !top_list.value().is_list()) {
if (top_list.get() == nullptr) {
// We got something malformed back. // We got something malformed back.
LOG(ERROR) << "Malformed top list"; LOG(ERROR) << "Malformed top list";
result = PpdProvider::INTERNAL_ERROR; result = PpdProvider::INTERNAL_ERROR;
} else { } else {
// We'll set result to SUCCESS if we do find the device. // We'll set result to SUCCESS if we do find the device.
result = PpdProvider::NOT_FOUND; result = PpdProvider::NOT_FOUND;
for (const auto& entry : *top_list) { for (const auto& entry : top_list.value().GetList()) {
int device_id; int device_id;
const base::ListValue* sub_list; const base::ListValue* sub_list;
...@@ -1280,13 +1277,12 @@ class PpdProviderImpl : public PpdProvider { ...@@ -1280,13 +1277,12 @@ class PpdProviderImpl : public PpdProvider {
return fetch_result; return fetch_result;
} }
auto ret_list = base::Optional<base::Value> ret_list = base::JSONReader::Read(buffer);
base::ListValue::From(base::JSONReader::ReadDeprecated(buffer)); if (!ret_list.has_value() || !ret_list.value().is_list()) {
if (ret_list == nullptr) {
return PpdProvider::INTERNAL_ERROR; return PpdProvider::INTERNAL_ERROR;
} }
*top_list = std::move(ret_list->GetList());
*top_list = std::move(ret_list.value().GetList());
for (const auto& entry : *top_list) { for (const auto& entry : *top_list) {
if (!entry.is_list()) { if (!entry.is_list()) {
return PpdProvider::INTERNAL_ERROR; return PpdProvider::INTERNAL_ERROR;
......
...@@ -48,12 +48,10 @@ const char kPrinterSettings[] = R"({ ...@@ -48,12 +48,10 @@ const char kPrinterSettings[] = R"({
} // namespace } // namespace
TEST(PrintSettingsConversionTest, ConversionTest) { TEST(PrintSettingsConversionTest, ConversionTest) {
std::unique_ptr<base::Value> value = base::Optional<base::Value> value = base::JSONReader::Read(kPrinterSettings);
base::JSONReader::ReadDeprecated(kPrinterSettings); ASSERT_TRUE(value.has_value());
ASSERT_TRUE(value);
PrintSettings settings; PrintSettings settings;
bool success = PrintSettingsFromJobSettings( bool success = PrintSettingsFromJobSettings(value.value(), &settings);
base::Value::FromUniquePtrValue(std::move(value)), &settings);
ASSERT_TRUE(success); ASSERT_TRUE(success);
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
EXPECT_TRUE(settings.send_user_info()); EXPECT_TRUE(settings.send_user_info());
...@@ -64,13 +62,11 @@ TEST(PrintSettingsConversionTest, ConversionTest) { ...@@ -64,13 +62,11 @@ TEST(PrintSettingsConversionTest, ConversionTest) {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
TEST(PrintSettingsConversionTest, ConversionTest_DontSendUsername) { TEST(PrintSettingsConversionTest, ConversionTest_DontSendUsername) {
std::unique_ptr<base::Value> value = base::Optional<base::Value> value = base::JSONReader::Read(kPrinterSettings);
base::JSONReader::ReadDeprecated(kPrinterSettings); ASSERT_TRUE(value.has_value());
ASSERT_TRUE(value);
value->SetKey(kSettingSendUserInfo, base::Value(false)); value->SetKey(kSettingSendUserInfo, base::Value(false));
PrintSettings settings; PrintSettings settings;
bool success = PrintSettingsFromJobSettings( bool success = PrintSettingsFromJobSettings(value.value(), &settings);
base::Value::FromUniquePtrValue(std::move(value)), &settings);
ASSERT_TRUE(success); ASSERT_TRUE(success);
EXPECT_FALSE(settings.send_user_info()); EXPECT_FALSE(settings.send_user_info());
EXPECT_EQ("", settings.username()); EXPECT_EQ("", settings.username());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment