| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/mirroring/service/value_util.h" |
| |
| namespace mirroring { |
| |
| bool GetInt(const base::Value& value, const std::string& key, int32_t* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (found->is_int()) { |
| *result = found->GetInt(); |
| return true; |
| } |
| return false; |
| } |
| |
| bool GetDouble(const base::Value& value, |
| const std::string& key, |
| double* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (found->is_double()) { |
| *result = found->GetDouble(); |
| return true; |
| } |
| if (found->is_int()) { |
| *result = found->GetInt(); |
| return true; |
| } |
| return false; |
| } |
| |
| bool GetString(const base::Value& value, |
| const std::string& key, |
| std::string* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (found->is_string()) { |
| *result = found->GetString(); |
| return true; |
| } |
| return false; |
| } |
| |
| bool GetBool(const base::Value& value, const std::string& key, bool* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (found->is_bool()) { |
| *result = found->GetBool(); |
| return true; |
| } |
| return false; |
| } |
| |
| bool GetIntArray(const base::Value& value, |
| const std::string& key, |
| std::vector<int32_t>* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (!found->is_list()) |
| return false; |
| for (const auto& number_value : found->GetList()) { |
| if (number_value.is_int()) |
| result->emplace_back(number_value.GetInt()); |
| else |
| return false; |
| } |
| return true; |
| } |
| |
| bool GetStringArray(const base::Value& value, |
| const std::string& key, |
| std::vector<std::string>* result) { |
| auto* found = value.FindKey(key); |
| if (!found || found->is_none()) |
| return true; |
| if (!found->is_list()) |
| return false; |
| for (const auto& string_value : found->GetList()) { |
| if (string_value.is_string()) |
| result->emplace_back(string_value.GetString()); |
| else |
| return false; |
| } |
| return true; |
| } |
| |
| } // namespace mirroring |