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/password_manager/core/common/credential_manager_types.h"
6 
7 #include <memory>
8 
9 #include "base/strings/string_number_conversions.h"
10 
11 namespace password_manager {
12 
CredentialTypeToString(CredentialType value)13 std::string CredentialTypeToString(CredentialType value) {
14   switch (value) {
15     case CredentialType::CREDENTIAL_TYPE_EMPTY:
16       return "CredentialType::CREDENTIAL_TYPE_EMPTY";
17     case CredentialType::CREDENTIAL_TYPE_PASSWORD:
18       return "CredentialType::CREDENTIAL_TYPE_PASSWORD";
19     case CredentialType::CREDENTIAL_TYPE_FEDERATED:
20       return "CredentialType::CREDENTIAL_TYPE_FEDERATED";
21   }
22   return "Unknown CredentialType value: " +
23          base::NumberToString(static_cast<int>(value));
24 }
25 
operator <<(std::ostream & os,CredentialType value)26 std::ostream& operator<<(std::ostream& os, CredentialType value) {
27   return os << CredentialTypeToString(value);
28 }
29 
CredentialInfo()30 CredentialInfo::CredentialInfo() : type(CredentialType::CREDENTIAL_TYPE_EMPTY) {
31 }
32 
CredentialInfo(CredentialType type,base::Optional<base::string16> id,base::Optional<base::string16> name,GURL icon,base::Optional<base::string16> password,url::Origin federation)33 CredentialInfo::CredentialInfo(CredentialType type,
34                                base::Optional<base::string16> id,
35                                base::Optional<base::string16> name,
36                                GURL icon,
37                                base::Optional<base::string16> password,
38                                url::Origin federation)
39     : type(type),
40       id(std::move(id)),
41       name(std::move(name)),
42       icon(std::move(icon)),
43       password(std::move(password)),
44       federation(std::move(federation)) {
45   switch (type) {
46     case CredentialType::CREDENTIAL_TYPE_EMPTY:
47       password = base::string16();
48       federation = url::Origin();
49       break;
50     case CredentialType::CREDENTIAL_TYPE_PASSWORD:
51       federation = url::Origin();
52       break;
53     case CredentialType::CREDENTIAL_TYPE_FEDERATED:
54       password = base::string16();
55       break;
56   }
57 }
58 
59 CredentialInfo::CredentialInfo(const CredentialInfo& other) = default;
60 
61 CredentialInfo::~CredentialInfo() = default;
62 
operator ==(const CredentialInfo & rhs) const63 bool CredentialInfo::operator==(const CredentialInfo& rhs) const {
64   return (type == rhs.type && id == rhs.id && name == rhs.name &&
65           icon == rhs.icon && password == rhs.password &&
66           federation.Serialize() == rhs.federation.Serialize());
67 }
68 
69 }  // namespace password_manager
70