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