Upload upstream chromium 71.0.3578.0
[platform/framework/web/chromium-efl.git] / components / login / base_screen_handler_utils.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
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 "components/login/base_screen_handler_utils.h"
6
7 #include "components/account_id/account_id.h"
8
9 namespace login {
10
11 namespace {
12
13 template <typename StringListType>
14 bool ParseStringList(const base::Value* value, StringListType* out_value) {
15   const base::ListValue* list = nullptr;
16   if (!value->GetAsList(&list))
17     return false;
18   out_value->resize(list->GetSize());
19   for (size_t i = 0; i < list->GetSize(); ++i) {
20     if (!list->GetString(i, &((*out_value)[i])))
21       return false;
22   }
23   return true;
24 }
25
26 }  // namespace
27
28 bool ParseValue(const base::Value* value, bool* out_value) {
29   return value->GetAsBoolean(out_value);
30 }
31
32 bool ParseValue(const base::Value* value, int* out_value) {
33   return value->GetAsInteger(out_value);
34 }
35
36 bool ParseValue(const base::Value* value, double* out_value) {
37   return value->GetAsDouble(out_value);
38 }
39
40 bool ParseValue(const base::Value* value, std::string* out_value) {
41   return value->GetAsString(out_value);
42 }
43
44 bool ParseValue(const base::Value* value, base::string16* out_value) {
45   return value->GetAsString(out_value);
46 }
47
48 bool ParseValue(const base::Value* value,
49                 const base::DictionaryValue** out_value) {
50   return value->GetAsDictionary(out_value);
51 }
52
53 bool ParseValue(const base::Value* value, StringList* out_value) {
54   return ParseStringList(value, out_value);
55 }
56
57 bool ParseValue(const base::Value* value, String16List* out_value) {
58   return ParseStringList(value, out_value);
59 }
60
61 bool ParseValue(const base::Value* value, AccountId* out_value) {
62   std::string serialized;
63   const bool has_string = value->GetAsString(&serialized);
64   if (!has_string)
65     return false;
66
67   if (AccountId::Deserialize(serialized, out_value))
68     return true;
69
70   *out_value = AccountId::FromUserEmail(serialized);
71   LOG(ERROR) << "Failed to deserialize, parse as email, valid="
72              << out_value->is_valid();
73   return true;
74 }
75
76 base::Value MakeValue(bool v) {
77   return base::Value(v);
78 }
79
80 base::Value MakeValue(int v) {
81   return base::Value(v);
82 }
83
84 base::Value MakeValue(double v) {
85   return base::Value(v);
86 }
87
88 base::Value MakeValue(const std::string& v) {
89   return base::Value(v);
90 }
91
92 base::Value MakeValue(const base::string16& v) {
93   return base::Value(v);
94 }
95
96 base::Value MakeValue(const AccountId& v) {
97   return base::Value(v.Serialize());
98 }
99
100 ParsedValueContainer<AccountId>::ParsedValueContainer() {
101 }
102
103 }  // namespace login