| Index: webkit/forms/password_form_dom_manager.cc
|
| ===================================================================
|
| --- webkit/forms/password_form_dom_manager.cc (revision 127673)
|
| +++ webkit/forms/password_form_dom_manager.cc (working copy)
|
| @@ -22,6 +22,55 @@
|
| PasswordFormFillData::~PasswordFormFillData() {
|
| }
|
|
|
| +const FormField& PasswordFormFillData::GetUsernameField() const {
|
| + switch (GetDataType()) {
|
| + case kUsernameAndPassword:
|
| + return basic_data.fields[0];
|
| + break;
|
| + case kOnlyPassword:
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + NOTREACHED();
|
| + // This return expression is to make this function returns a value
|
| + // in all paths.
|
| + // If there is a path which doesn't return any values,
|
| + // most of compiler output a warning or error.
|
| + // (ex. Visual C++ compiler outputs C4715 warning.)
|
| + return basic_data.fields[0];
|
| +}
|
| +
|
| +const FormField& PasswordFormFillData::GetPasswordField() const {
|
| + switch (GetDataType()) {
|
| + case kUsernameAndPassword:
|
| + return basic_data.fields[1];
|
| + break;
|
| + case kOnlyPassword:
|
| + return basic_data.fields[0];
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + NOTREACHED();
|
| + // This return expression is to make this function returns a value
|
| + // in all paths.
|
| + // If there is a path which doesn't return any values,
|
| + // most of compiler output a warning or error.
|
| + // (ex. Visual C++ compiler outputs C4715 warning.)
|
| + return basic_data.fields[0];
|
| +}
|
| +
|
| +PasswordFormFillData::DataType PasswordFormFillData::GetDataType() const {
|
| + if (basic_data.fields.size() == 2) {
|
| + return kUsernameAndPassword;
|
| + } else if (basic_data.fields.size() == 1) {
|
| + return kOnlyPassword;
|
| + } else {
|
| + NOTREACHED();
|
| + }
|
| + return kError;
|
| +}
|
| +
|
| PasswordForm* PasswordFormDomManager::CreatePasswordForm(
|
| const WebFormElement& webform) {
|
| WebPasswordFormData web_password_form(webform);
|
| @@ -37,20 +86,28 @@
|
| const PasswordForm* const preferred_match,
|
| bool wait_for_username_before_autofill,
|
| PasswordFormFillData* result) {
|
| +
|
| + // Fill basic form data.
|
| + result->basic_data.origin = form_on_page.origin;
|
| + result->basic_data.action = form_on_page.action;
|
| +
|
| // Note that many of the |FormField| members are not initialized for
|
| // |username_field| and |password_field| because they are currently not used
|
| // by the password autocomplete code.
|
| - FormField username_field;
|
| - username_field.name = form_on_page.username_element;
|
| - username_field.value = preferred_match->username_value;
|
| +
|
| + // If username_element and preferred_match->username_value are empty string,
|
| + // we suppose that there isn't any username field and don't set the username.
|
| + string16 none_username;
|
| + if (form_on_page.username_element != none_username
|
| + && preferred_match->username_value != none_username) {
|
| + FormField username_field;
|
| + username_field.name = form_on_page.username_element;
|
| + username_field.value = preferred_match->username_value;
|
| + result->basic_data.fields.push_back(username_field);
|
| + }
|
| FormField password_field;
|
| password_field.name = form_on_page.password_element;
|
| password_field.value = preferred_match->password_value;
|
| -
|
| - // Fill basic form data.
|
| - result->basic_data.origin = form_on_page.origin;
|
| - result->basic_data.action = form_on_page.action;
|
| - result->basic_data.fields.push_back(username_field);
|
| result->basic_data.fields.push_back(password_field);
|
| result->wait_for_username = wait_for_username_before_autofill;
|
|
|
|
|