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