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 #ifndef COMPONENTS_PASSWORD_MANAGER_CONTENT_COMMON_CREDENTIAL_MANAGER_MOJOM_TRAITS_H_
6 #define COMPONENTS_PASSWORD_MANAGER_CONTENT_COMMON_CREDENTIAL_MANAGER_MOJOM_TRAITS_H_
7 
8 #include "base/optional.h"
9 #include "base/strings/string16.h"
10 #include "components/password_manager/core/common/credential_manager_types.h"
11 #include "mojo/public/cpp/bindings/struct_traits.h"
12 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom.h"
13 
14 namespace mojo {
15 
16 template <>
17 struct EnumTraits<blink::mojom::CredentialType,
18                   password_manager::CredentialType> {
19   static blink::mojom::CredentialType ToMojom(
20       password_manager::CredentialType input);
21   static bool FromMojom(blink::mojom::CredentialType input,
22                         password_manager::CredentialType* output);
23 };
24 
25 template <>
26 struct EnumTraits<blink::mojom::CredentialManagerError,
27                   password_manager::CredentialManagerError> {
28   static blink::mojom::CredentialManagerError ToMojom(
29       password_manager::CredentialManagerError input);
30   static bool FromMojom(blink::mojom::CredentialManagerError input,
31                         password_manager::CredentialManagerError* output);
32 };
33 
34 template <>
35 struct EnumTraits<blink::mojom::CredentialMediationRequirement,
36                   password_manager::CredentialMediationRequirement> {
37   static blink::mojom::CredentialMediationRequirement ToMojom(
38       password_manager::CredentialMediationRequirement input);
39   static bool FromMojom(
40       blink::mojom::CredentialMediationRequirement input,
41       password_manager::CredentialMediationRequirement* output);
42 };
43 
44 template <>
45 struct StructTraits<blink::mojom::CredentialInfoDataView,
46                     password_manager::CredentialInfo> {
47   static password_manager::CredentialType type(
48       const password_manager::CredentialInfo& r) {
49     return r.type;
50   }
51 
52   static const base::Optional<base::string16>& id(
53       const password_manager::CredentialInfo& r) {
54     return r.id;
55   }
56 
57   static const base::Optional<base::string16>& name(
58       const password_manager::CredentialInfo& r) {
59     return r.name;
60   }
61 
62   static const GURL& icon(const password_manager::CredentialInfo& r) {
63     return r.icon;
64   }
65 
66   static const base::Optional<base::string16>& password(
67       const password_manager::CredentialInfo& r) {
68     return r.password;
69   }
70 
71   static const url::Origin& federation(
72       const password_manager::CredentialInfo& r) {
73     return r.federation;
74   }
75 
76   static bool Read(blink::mojom::CredentialInfoDataView data,
77                    password_manager::CredentialInfo* out);
78 };
79 
80 }  // namespace mojo
81 
82 #endif  // COMPONENTS_PASSWORD_MANAGER_CONTENT_COMMON_CREDENTIAL_MANAGER_MOJOM_TRAITS_H_
83