password_form.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// found in the LICENSE file. 4ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#ifndef COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_FORM_H__ 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_FORM_H__ 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include <map> 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include <string> 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include <vector> 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/time/time.h" 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "components/autofill/core/common/form_data.h" 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "url/gurl.h" 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace autofill { 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// The PasswordForm struct encapsulates information about a login form, 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// which can be an HTML form or a dialog with username/password text fields. 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// The Web Data database stores saved username/passwords and associated form 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// metdata using a PasswordForm struct, typically one that was created from 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// a parsed HTMLFormElement or LoginDialog, but the saved entries could have 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// also been created by imported data from another browser. 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 26ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// The PasswordManager implements a fuzzy-matching algorithm to compare saved 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// PasswordForm entries against PasswordForms that were created from a parsed 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// HTML or dialog form. As one might expect, the more data contained in one 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// of the saved PasswordForms, the better the job the PasswordManager can do 30ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// in matching it against the actual form it was saved on, and autofill 31ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// accurately. But it is not always possible, especially when importing from 32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// other browsers with different data models, to copy over all the information 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// about a particular "saved password entry" to our PasswordForm 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// representation. 35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// The field descriptions in the struct specification below are intended to 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// describe which fields are not strictly required when adding a saved password 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// entry to the database and how they can affect the matching process. 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 40ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochstruct PasswordForm { 41ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Enum to differentiate between HTML form based authentication, and dialogs 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // using basic or digest schemes. Default is SCHEME_HTML. Only PasswordForms 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // of the same Scheme will be matched/autofilled against each other. 44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch enum Scheme { 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SCHEME_HTML, 46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SCHEME_BASIC, 47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SCHEME_DIGEST, 48ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SCHEME_OTHER, 49ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SCHEME_LAST = SCHEME_OTHER 50ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } scheme; 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 52ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The "Realm" for the sign-on (scheme, host, port for SCHEME_HTML, and 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // contains the HTTP realm for dialog-based forms). 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The signon_realm is effectively the primary key used for retrieving 55ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // data from the database, so it must not be empty. 56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string signon_realm; 57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 58ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The original "Realm" for the sign-on (scheme, host, port for SCHEME_HTML, 59ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // and contains the HTTP realm for dialog-based forms). This realm is only set 60ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // when two PasswordForms are matched when trying to find a login/pass pair 61ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // for a site. It is only set to a non-empty value during a match of the 62ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // original stored login/pass and the current observed form if all these 63ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // statements are true: 64ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 1) The full signon_realm is not the same. 65ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 2) The registry controlled domain is the same. For example; example.com, 66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // m.example.com, foo.login.example.com and www.example.com would all resolve 67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // to example.com since .com is the public suffix. 68ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 3) The scheme is the same. 69ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 4) The port is the same. 70ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // For example, if there exists a stored password for http://www.example.com 71ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // (where .com is the public suffix) and the observed form is 72ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // http://m.example.com, |original_signon_realm| must be set to 73ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // http://www.example.com. 74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string original_signon_realm; 75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The URL (minus query parameters) containing the form. This is the primary 77ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // data used by the PasswordManager to decide (in longest matching prefix 78ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // fashion) whether or not a given PasswordForm result from the database is a 79ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // good fit for a particular form on a page, so it must not be empty. 80ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GURL origin; 81ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 82ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The action target of the form. This is the primary data used by the 83ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // PasswordManager for form autofill; that is, the action of the saved 84ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // credentials must match the action of the form on the page to be autofilled. 85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // If this is empty / not available, it will result in a "restricted" 86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // IE-like autofill policy, where we wait for the user to type in his 87ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // username before autofilling the password. In these cases, after successful 88ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // login the action URL will automatically be assigned by the 89ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // PasswordManager. 90ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this must always be set. 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GURL action; 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The name of the submit button used. Optional; only used in scoring 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // of PasswordForm results from the database to make matches as tight as 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // possible. 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this must always be set. 99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 submit_element; 100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The name of the username input element. Optional (improves scoring). 102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this must always be set. 104ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 username_element; 105ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The username. Optional. 107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is typically empty unless the site 109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // has implemented some form of autofill. 110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 username_value; 111ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 112ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // This member is populated in cases where we there are multiple input 113ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // elements that could possibly be the username. Used when our heuristics for 114ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // determining the username are incorrect. Optional. 115ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 116ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is typically empty. 117ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::vector<base::string16> other_possible_usernames; 118ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 119ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The name of the password input element, Optional (improves scoring). 120ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 121ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this must always be set. 122ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 password_element; 123ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 124ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The password. Required. 125ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 126ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is typically empty. 127ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 password_value; 128ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 129ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // False if autocomplete is set to "off" for the password input element; 130ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // True otherwise. 131ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool password_autocomplete_set; 132ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 133ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // If the form was a change password form, the name of the 134ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 'old password' input element. Optional. 135ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 old_password_element; 136ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 137ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The old password. Optional. 138ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 old_password_value; 139ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 140ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Whether or not this login was saved under an HTTPS session with a valid 141ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // SSL cert. We will never match or autofill a PasswordForm where 142ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // ssl_valid == true with a PasswordForm where ssl_valid == false. This means 143ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // passwords saved under HTTPS will never get autofilled onto an HTTP page. 144ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When importing, this should be set to true if the page URL is HTTPS, thus 145ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // giving it "the benefit of the doubt" that the SSL cert was valid when it 146ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // was saved. Default to false. 147ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool ssl_valid; 148ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 149ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // True if this PasswordForm represents the last username/password login the 150ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // user selected to log in to the site. If there is only one saved entry for 151ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // the site, this will always be true, but when there are multiple entries 152ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // the PasswordManager ensures that only one of them has a preferred bit set 153ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // to true. Default to false. 154ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 155ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is not used. 156ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool preferred; 157ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 158ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When the login was saved (by chrome). 159ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 160ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is not used. 161ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Time date_created; 162ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 163ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When the login was downloaded from the sync server. For local passwords is 164ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // not used. 165ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 166ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is not used. 167ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Time date_synced; 168ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 169ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Tracks if the user opted to never remember passwords for this form. Default 170ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // to false. 171ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 172ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is not used. 173ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool blacklisted_by_user; 174ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 175ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Enum to differentiate between manually filled forms and forms with auto 176ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // generated passwords. 177ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch enum Type { 178ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TYPE_MANUAL, 179ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TYPE_GENERATED, 180ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TYPE_LAST = TYPE_GENERATED 181ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch }; 182ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 183ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The form type. Not used yet. Please see http://crbug.com/152422 184ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Type type; 185ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 186ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // The number of times that this username/password has been used to 187ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // authenticate the user. 188ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 189ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is not used. 190ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch int times_used; 191ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 192ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // True if additional system level authentication should be used 193ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // (if available) before using this password for autofill. 194ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 195ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Default to false. 196ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool use_additional_authentication; 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Autofill representation of this form. Used to communicate with the 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Autofill servers if necessary. Currently this is only used to help 200ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // determine forms where we can trigger password generation. 201ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // 202ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // When parsing an HTML form, this is normally set. 2033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) FormData form_data; 204ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 205ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Returns true if this match was found using public suffix matching. 206ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool IsPublicSuffixMatch() const; 207ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 208ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Equality operators for testing. 209ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool operator==(const PasswordForm& form) const; 210ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool operator!=(const PasswordForm& form) const; 211ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 212ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch PasswordForm(); 213ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ~PasswordForm(); 214ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 215ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 216ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Map username to PasswordForm* for convenience. See password_form_manager.h. 217ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochtypedef std::map<base::string16, PasswordForm*> PasswordFormMap; 218ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 219ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// For testing. 220ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochstd::ostream& operator<<(std::ostream& os, 221ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const autofill::PasswordForm& form); 222ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 223ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace autofill 224ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 225ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif // COMPONENTS_AUTOFILL_CORE_COMMON_PASSWORD_FORM_H__ 226ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch