[email protected] | 90e800c | 2012-06-12 23:11:00 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [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/value_conversions.h" | ||||
6 | |||||
[email protected] | c014f2b3 | 2013-09-03 23:29:12 | [diff] [blame] | 7 | #include <string> |
8 | |||||
9 | #include "base/basictypes.h" | ||||
[email protected] | 5799981 | 2013-02-24 05:40:52 | [diff] [blame] | 10 | #include "base/files/file_path.h" |
[email protected] | dfa049e | 2013-02-07 02:57:22 | [diff] [blame] | 11 | #include "base/strings/string_number_conversions.h" |
[email protected] | 8f9a3a5 | 2013-06-28 15:14:18 | [diff] [blame] | 12 | #include "base/time/time.h" |
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 13 | #include "base/values.h" |
14 | |||||
15 | namespace base { | ||||
16 | |||||
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 17 | // |Value| internally stores strings in UTF-8, so we have to convert from the |
18 | // system native code to UTF-8 and back. | ||||
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 19 | StringValue* CreateFilePathValue(const FilePath& in_value) { |
[email protected] | 4544051 | 2011-11-02 04:55:23 | [diff] [blame] | 20 | return new StringValue(in_value.AsUTF8Unsafe()); |
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 21 | } |
22 | |||||
23 | bool GetValueAsFilePath(const Value& value, FilePath* file_path) { | ||||
24 | std::string str; | ||||
25 | if (!value.GetAsString(&str)) | ||||
26 | return false; | ||||
27 | if (file_path) | ||||
[email protected] | 4544051 | 2011-11-02 04:55:23 | [diff] [blame] | 28 | *file_path = FilePath::FromUTF8Unsafe(str); |
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 29 | return true; |
30 | } | ||||
31 | |||||
[email protected] | 90e800c | 2012-06-12 23:11:00 | [diff] [blame] | 32 | // |Value| does not support 64-bit integers, and doubles do not have enough |
33 | // precision, so we store the 64-bit time value as a string instead. | ||||
[email protected] | 64a82a5 | 2012-06-14 00:30:56 | [diff] [blame] | 34 | StringValue* CreateTimeDeltaValue(const TimeDelta& time) { |
[email protected] | 90e800c | 2012-06-12 23:11:00 | [diff] [blame] | 35 | std::string string_value = base::Int64ToString(time.ToInternalValue()); |
36 | return new StringValue(string_value); | ||||
37 | } | ||||
38 | |||||
[email protected] | 64a82a5 | 2012-06-14 00:30:56 | [diff] [blame] | 39 | bool GetValueAsTimeDelta(const Value& value, TimeDelta* time) { |
[email protected] | 90e800c | 2012-06-12 23:11:00 | [diff] [blame] | 40 | std::string str; |
41 | int64 int_value; | ||||
42 | if (!value.GetAsString(&str) || !base::StringToInt64(str, &int_value)) | ||||
43 | return false; | ||||
44 | if (time) | ||||
[email protected] | 64a82a5 | 2012-06-14 00:30:56 | [diff] [blame] | 45 | *time = TimeDelta::FromInternalValue(int_value); |
[email protected] | 90e800c | 2012-06-12 23:11:00 | [diff] [blame] | 46 | return true; |
47 | } | ||||
48 | |||||
[email protected] | 8703b2b | 2011-03-15 09:51:50 | [diff] [blame] | 49 | } // namespace base |