158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include <ostream>
6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
7d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/strings/string16.h"
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/strings/utf_string_conversions.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "components/autofill/core/common/password_form.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace autofill {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PasswordForm::PasswordForm()
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : scheme(SCHEME_HTML),
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      password_autocomplete_set(true),
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ssl_valid(false),
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      preferred(false),
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      blacklisted_by_user(false),
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      type(TYPE_MANUAL),
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      times_used(0),
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      use_additional_authentication(false),
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      is_zero_click(false) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PasswordForm::~PasswordForm() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool PasswordForm::IsPublicSuffixMatch() const {
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return !original_signon_realm.empty();
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)bool PasswordForm::operator==(const PasswordForm& form) const {
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return signon_realm == form.signon_realm &&
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      origin == form.origin &&
35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      action == form.action &&
36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      submit_element == form.submit_element &&
37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      username_element == form.username_element &&
38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      username_value == form.username_value &&
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      other_possible_usernames == form.other_possible_usernames &&
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      password_element == form.password_element &&
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      password_value == form.password_value &&
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      password_autocomplete_set == form.password_autocomplete_set &&
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      new_password_element == form.new_password_element &&
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      new_password_value == form.new_password_value &&
45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      ssl_valid == form.ssl_valid &&
46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      preferred == form.preferred &&
47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      date_created == form.date_created &&
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      date_synced == form.date_synced &&
49d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      blacklisted_by_user == form.blacklisted_by_user &&
50d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      type == form.type &&
51d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      times_used == form.times_used &&
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      use_additional_authentication == form.use_additional_authentication &&
5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      form_data == form.form_data &&
5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      display_name == form.display_name &&
5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      avatar_url == form.avatar_url &&
5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      federation_url == form.federation_url &&
5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      is_zero_click == form.is_zero_click;
58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
59d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)bool PasswordForm::operator!=(const PasswordForm& form) const {
61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return !operator==(form);
62d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, const PasswordForm& form) {
65d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return os << "scheme: " << form.scheme
66d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " signon_realm: " << form.signon_realm
67d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " origin: " << form.origin
68d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " action: " << form.action
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " submit_element: " << base::UTF16ToUTF8(form.submit_element)
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " username_elem: " << base::UTF16ToUTF8(form.username_element)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " username_value: " << base::UTF16ToUTF8(form.username_value)
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " password_elem: " << base::UTF16ToUTF8(form.password_element)
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " password_value: " << base::UTF16ToUTF8(form.password_value)
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            << " new_password_element: "
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            << base::UTF16ToUTF8(form.new_password_element)
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            << " new_password_value: "
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            << base::UTF16ToUTF8(form.new_password_value)
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " autocomplete_set:" << form.password_autocomplete_set
79d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " blacklisted: " << form.blacklisted_by_user
80d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " preferred: " << form.preferred
81d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " ssl_valid: " << form.ssl_valid
82d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " date_created: " << form.date_created.ToDoubleT()
83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            << " date_synced: " << form.date_synced.ToDoubleT()
84d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " type: " << form.type
85d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)            << " times_used: " << form.times_used
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << " use additional authentication: "
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            << form.use_additional_authentication
8803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            << " form_data: " << form.form_data
8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            << " display_name: " << base::UTF16ToUTF8(form.display_name)
9003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            << " avatar_url: " << form.avatar_url
9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            << " federation_url: " << form.federation_url
9203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)            << " is_zero_click: " << form.is_zero_click;
93d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
94d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace autofill
96