| Avi Drissman | e4622aa | 2022-09-08 20:36:06 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. | ||||
| 4 | |||||
| 5 | #include "base/json/json_value_converter.h" | ||||
| 6 | |||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 7 | #include "base/strings/utf_string_conversions.h" |
| 8 | |||||
| Peter Kasting | 811504a7 | 2025-01-09 03:18:50 | [diff] [blame] | 9 | namespace base::internal { |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 10 | |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 11 | bool BasicValueConverter<int>::Convert(const base::Value& value, |
| 12 | int* field) const { | ||||
| 13 | if (!value.is_int()) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 14 | return false; |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 15 | } |
| 16 | if (field) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 17 | *field = value.GetInt(); |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 18 | } |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 19 | return true; |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 20 | } |
| 21 | |||||
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 22 | bool BasicValueConverter<std::string>::Convert(const base::Value& value, |
| 23 | std::string* field) const { | ||||
| 24 | if (!value.is_string()) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 25 | return false; |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 26 | } |
| 27 | if (field) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 28 | *field = value.GetString(); |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 29 | } |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 30 | return true; |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 31 | } |
| 32 | |||||
| Jan Wilken Dörrie | 085b2aa | 2021-03-12 16:26:57 | [diff] [blame] | 33 | bool BasicValueConverter<std::u16string>::Convert(const base::Value& value, |
| 34 | std::u16string* field) const { | ||||
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 35 | if (!value.is_string()) { |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 36 | return false; |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 37 | } |
| 38 | if (field) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 39 | *field = base::UTF8ToUTF16(value.GetString()); |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 40 | } |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 41 | return true; |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 42 | } |
| 43 | |||||
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 44 | bool BasicValueConverter<double>::Convert(const base::Value& value, |
| 45 | double* field) const { | ||||
| 46 | if (!value.is_double() && !value.is_int()) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 47 | return false; |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 48 | } |
| 49 | if (field) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 50 | *field = value.GetDouble(); |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 51 | } |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 52 | return true; |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 53 | } |
| 54 | |||||
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 55 | bool BasicValueConverter<bool>::Convert(const base::Value& value, |
| 56 | bool* field) const { | ||||
| 57 | if (!value.is_bool()) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 58 | return false; |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 59 | } |
| 60 | if (field) { | ||||
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 61 | *field = value.GetBool(); |
| Peter Kasting | 134ef9af | 2024-12-28 02:30:09 | [diff] [blame] | 62 | } |
| David 'Digit' Turner | 93131b7d | 2019-04-11 13:53:17 | [diff] [blame] | 63 | return true; |
| dmichael | 7d09007e | 2014-12-18 22:30:11 | [diff] [blame] | 64 | } |
| 65 | |||||
| Peter Kasting | 811504a7 | 2025-01-09 03:18:50 | [diff] [blame] | 66 | } // namespace base::internal |