1 // Copyright 2016 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/password_manager/content/common/credential_manager_mojom_traits.h"
6 
7 #include "mojo/public/cpp/base/string16_mojom_traits.h"
8 #include "url/mojom/origin_mojom_traits.h"
9 #include "url/mojom/url_gurl_mojom_traits.h"
10 
11 namespace mojo {
12 
13 // static
14 blink::mojom::CredentialType
15 EnumTraits<blink::mojom::CredentialType, password_manager::CredentialType>::
ToMojom(password_manager::CredentialType input)16     ToMojom(password_manager::CredentialType input) {
17   switch (input) {
18     case password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY:
19       return blink::mojom::CredentialType::EMPTY;
20     case password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD:
21       return blink::mojom::CredentialType::PASSWORD;
22     case password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED:
23       return blink::mojom::CredentialType::FEDERATED;
24   }
25 
26   NOTREACHED();
27   return blink::mojom::CredentialType::EMPTY;
28 }
29 
30 // static
31 bool EnumTraits<blink::mojom::CredentialType,
32                 password_manager::CredentialType>::
FromMojom(blink::mojom::CredentialType input,password_manager::CredentialType * output)33     FromMojom(blink::mojom::CredentialType input,
34               password_manager::CredentialType* output) {
35   switch (input) {
36     case blink::mojom::CredentialType::EMPTY:
37       *output = password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY;
38       return true;
39     case blink::mojom::CredentialType::PASSWORD:
40       *output = password_manager::CredentialType::CREDENTIAL_TYPE_PASSWORD;
41       return true;
42     case blink::mojom::CredentialType::FEDERATED:
43       *output = password_manager::CredentialType::CREDENTIAL_TYPE_FEDERATED;
44       return true;
45   }
46 
47   NOTREACHED();
48   return false;
49 }
50 
51 // static
52 blink::mojom::CredentialManagerError
53 EnumTraits<blink::mojom::CredentialManagerError,
54            password_manager::CredentialManagerError>::
ToMojom(password_manager::CredentialManagerError input)55     ToMojom(password_manager::CredentialManagerError input) {
56   switch (input) {
57     case password_manager::CredentialManagerError::SUCCESS:
58       return blink::mojom::CredentialManagerError::SUCCESS;
59     case password_manager::CredentialManagerError::PENDING_REQUEST:
60       return blink::mojom::CredentialManagerError::PENDING_REQUEST;
61     case password_manager::CredentialManagerError::PASSWORDSTOREUNAVAILABLE:
62       return blink::mojom::CredentialManagerError::PASSWORD_STORE_UNAVAILABLE;
63     case password_manager::CredentialManagerError::UNKNOWN:
64       return blink::mojom::CredentialManagerError::UNKNOWN;
65   }
66 
67   NOTREACHED();
68   return blink::mojom::CredentialManagerError::UNKNOWN;
69 }
70 
71 // static
72 bool EnumTraits<blink::mojom::CredentialManagerError,
73                 password_manager::CredentialManagerError>::
FromMojom(blink::mojom::CredentialManagerError input,password_manager::CredentialManagerError * output)74     FromMojom(blink::mojom::CredentialManagerError input,
75               password_manager::CredentialManagerError* output) {
76   switch (input) {
77     case blink::mojom::CredentialManagerError::SUCCESS:
78       *output = password_manager::CredentialManagerError::SUCCESS;
79       return true;
80     case blink::mojom::CredentialManagerError::PENDING_REQUEST:
81       *output = password_manager::CredentialManagerError::PENDING_REQUEST;
82       return true;
83     case blink::mojom::CredentialManagerError::PASSWORD_STORE_UNAVAILABLE:
84       *output =
85           password_manager::CredentialManagerError::PASSWORDSTOREUNAVAILABLE;
86       return true;
87     case blink::mojom::CredentialManagerError::NOT_ALLOWED:
88     case blink::mojom::CredentialManagerError::ANDROID_NOT_SUPPORTED_ERROR:
89     case blink::mojom::CredentialManagerError::ANDROID_ALGORITHM_UNSUPPORTED:
90     case blink::mojom::CredentialManagerError::ANDROID_EMPTY_ALLOW_CREDENTIALS:
91     case blink::mojom::CredentialManagerError::
92         ANDROID_USER_VERIFICATION_UNSUPPORTED:
93     case blink::mojom::CredentialManagerError::INVALID_DOMAIN:
94     case blink::mojom::CredentialManagerError::INVALID_ICON_URL:
95     case blink::mojom::CredentialManagerError::CREDENTIAL_EXCLUDED:
96     case blink::mojom::CredentialManagerError::CREDENTIAL_NOT_RECOGNIZED:
97     case blink::mojom::CredentialManagerError::NOT_IMPLEMENTED:
98     case blink::mojom::CredentialManagerError::NOT_FOCUSED:
99     case blink::mojom::CredentialManagerError::RESIDENT_CREDENTIALS_UNSUPPORTED:
100     case blink::mojom::CredentialManagerError::PROTECTION_POLICY_INCONSISTENT:
101     case blink::mojom::CredentialManagerError::ABORT:
102     case blink::mojom::CredentialManagerError::OPAQUE_DOMAIN:
103     case blink::mojom::CredentialManagerError::INVALID_PROTOCOL:
104     case blink::mojom::CredentialManagerError::BAD_RELYING_PARTY_ID:
105     case blink::mojom::CredentialManagerError::CANNOT_READ_AND_WRITE_LARGE_BLOB:
106     case blink::mojom::CredentialManagerError::
107         INVALID_ALLOW_CREDENTIALS_FOR_LARGE_BLOB:
108     case blink::mojom::CredentialManagerError::UNKNOWN:
109       *output = password_manager::CredentialManagerError::UNKNOWN;
110       return true;
111   }
112 
113   NOTREACHED();
114   return false;
115 }
116 
117 // static
118 blink::mojom::CredentialMediationRequirement
119 EnumTraits<blink::mojom::CredentialMediationRequirement,
120            password_manager::CredentialMediationRequirement>::
ToMojom(password_manager::CredentialMediationRequirement input)121     ToMojom(password_manager::CredentialMediationRequirement input) {
122   switch (input) {
123     case password_manager::CredentialMediationRequirement::kSilent:
124       return blink::mojom::CredentialMediationRequirement::kSilent;
125     case password_manager::CredentialMediationRequirement::kOptional:
126       return blink::mojom::CredentialMediationRequirement::kOptional;
127     case password_manager::CredentialMediationRequirement::kRequired:
128       return blink::mojom::CredentialMediationRequirement::kRequired;
129   }
130 
131   NOTREACHED();
132   return blink::mojom::CredentialMediationRequirement::kOptional;
133 }
134 
135 // static
136 bool EnumTraits<blink::mojom::CredentialMediationRequirement,
137                 password_manager::CredentialMediationRequirement>::
FromMojom(blink::mojom::CredentialMediationRequirement input,password_manager::CredentialMediationRequirement * output)138     FromMojom(blink::mojom::CredentialMediationRequirement input,
139               password_manager::CredentialMediationRequirement* output) {
140   switch (input) {
141     case blink::mojom::CredentialMediationRequirement::kSilent:
142       *output = password_manager::CredentialMediationRequirement::kSilent;
143       return true;
144     case blink::mojom::CredentialMediationRequirement::kOptional:
145       *output = password_manager::CredentialMediationRequirement::kOptional;
146       return true;
147     case blink::mojom::CredentialMediationRequirement::kRequired:
148       *output = password_manager::CredentialMediationRequirement::kRequired;
149       return true;
150   }
151 
152   NOTREACHED();
153   return false;
154 }
155 
156 // static
157 bool StructTraits<blink::mojom::CredentialInfoDataView,
158                   password_manager::CredentialInfo>::
Read(blink::mojom::CredentialInfoDataView data,password_manager::CredentialInfo * out)159     Read(blink::mojom::CredentialInfoDataView data,
160          password_manager::CredentialInfo* out) {
161   if (data.ReadType(&out->type) && data.ReadId(&out->id) &&
162       data.ReadName(&out->name) && data.ReadIcon(&out->icon) &&
163       data.ReadPassword(&out->password) &&
164       data.ReadFederation(&out->federation))
165     return true;
166 
167   return false;
168 }
169 
170 }  // namespace mojo
171