OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/autofill/content/renderer/password_autofill_agent.h" | 5 #include "components/autofill/content/renderer/password_autofill_agent.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 if (password.empty()) | 449 if (password.empty()) |
450 return false; | 450 return false; |
451 | 451 |
452 // TODO(tkent): Check maxlength and pattern for both username and password | 452 // TODO(tkent): Check maxlength and pattern for both username and password |
453 // fields. | 453 // fields. |
454 | 454 |
455 // Input matches the username, fill in required values. | 455 // Input matches the username, fill in required values. |
456 if (!username_element->isNull() && | 456 if (!username_element->isNull() && |
457 IsElementAutocompletable(*username_element)) { | 457 IsElementAutocompletable(*username_element)) { |
458 // TODO(crbug.com/507714): Why not setSuggestedValue? | 458 // TODO(crbug.com/507714): Why not setSuggestedValue? |
459 username_element->setValue(blink::WebString::fromUTF16(username), true); | 459 username_element->setAutofillValue(blink::WebString::fromUTF16(username)); |
460 UpdateFieldValueAndPropertiesMaskMap(*username_element, &username, | 460 UpdateFieldValueAndPropertiesMaskMap(*username_element, &username, |
461 FieldPropertiesFlags::AUTOFILLED, | 461 FieldPropertiesFlags::AUTOFILLED, |
462 field_value_and_properties_map); | 462 field_value_and_properties_map); |
463 username_element->setAutofilled(true); | 463 username_element->setAutofilled(true); |
464 if (logger) | 464 if (logger) |
465 logger->LogElementName(Logger::STRING_USERNAME_FILLED, *username_element); | 465 logger->LogElementName(Logger::STRING_USERNAME_FILLED, *username_element); |
466 if (set_selection) { | 466 if (set_selection) { |
467 form_util::PreviewSuggestion(username, current_username, | 467 form_util::PreviewSuggestion(username, current_username, |
468 username_element); | 468 username_element); |
469 } | 469 } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 // select to fill the password element, so the password element must be marked | 544 // select to fill the password element, so the password element must be marked |
545 // as autofilled and the fill step should also be skipped if the user is not | 545 // as autofilled and the fill step should also be skipped if the user is not |
546 // in the "no highlighting" group. | 546 // in the "no highlighting" group. |
547 // | 547 // |
548 // In all other cases, do nothing. | 548 // In all other cases, do nothing. |
549 bool form_has_fillable_username = !username_field_name.empty() && | 549 bool form_has_fillable_username = !username_field_name.empty() && |
550 IsElementAutocompletable(username_element); | 550 IsElementAutocompletable(username_element); |
551 | 551 |
552 if (form_has_fillable_username && username_element.value().isEmpty()) { | 552 if (form_has_fillable_username && username_element.value().isEmpty()) { |
553 // TODO(tkent): Check maxlength and pattern. | 553 // TODO(tkent): Check maxlength and pattern. |
554 username_element.setValue( | 554 username_element.setAutofillValue( |
555 blink::WebString::fromUTF16(fill_data.username_field.value), true); | 555 blink::WebString::fromUTF16(fill_data.username_field.value)); |
556 } | 556 } |
557 | 557 |
558 // Fill if we have an exact match for the username. Note that this sets | 558 // Fill if we have an exact match for the username. Note that this sets |
559 // username to autofilled. | 559 // username to autofilled. |
560 return FillUserNameAndPassword( | 560 return FillUserNameAndPassword( |
561 &username_element, &password_element, fill_data, | 561 &username_element, &password_element, fill_data, |
562 true /* exact_username_match */, false /* set_selection */, | 562 true /* exact_username_match */, false /* set_selection */, |
563 field_value_and_properties_map, registration_callback, logger); | 563 field_value_and_properties_map, registration_callback, logger); |
564 } | 564 } |
565 | 565 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 } | 649 } |
650 | 650 |
651 void PasswordAutofillAgent::PasswordValueGatekeeper::Reset() { | 651 void PasswordAutofillAgent::PasswordValueGatekeeper::Reset() { |
652 was_user_gesture_seen_ = false; | 652 was_user_gesture_seen_ = false; |
653 elements_.clear(); | 653 elements_.clear(); |
654 } | 654 } |
655 | 655 |
656 void PasswordAutofillAgent::PasswordValueGatekeeper::ShowValue( | 656 void PasswordAutofillAgent::PasswordValueGatekeeper::ShowValue( |
657 blink::WebInputElement* element) { | 657 blink::WebInputElement* element) { |
658 if (!element->isNull() && !element->suggestedValue().isEmpty()) | 658 if (!element->isNull() && !element->suggestedValue().isEmpty()) |
659 element->setValue(element->suggestedValue(), true); | 659 element->setAutofillValue(element->suggestedValue()); |
660 } | 660 } |
661 | 661 |
662 bool PasswordAutofillAgent::TextDidChangeInTextField( | 662 bool PasswordAutofillAgent::TextDidChangeInTextField( |
663 const blink::WebInputElement& element) { | 663 const blink::WebInputElement& element) { |
664 // TODO(vabr): Get a mutable argument instead. http://crbug.com/397083 | 664 // TODO(vabr): Get a mutable argument instead. http://crbug.com/397083 |
665 blink::WebInputElement mutable_element = element; // We need a non-const. | 665 blink::WebInputElement mutable_element = element; // We need a non-const. |
666 mutable_element.setAutofilled(false); | 666 mutable_element.setAutofilled(false); |
667 | 667 |
668 WebInputToPasswordInfoMap::iterator iter = | 668 WebInputToPasswordInfoMap::iterator iter = |
669 web_input_to_password_info_.find(element); | 669 web_input_to_password_info_.find(element); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 !IsElementAutocompletable(password_element)) { | 741 !IsElementAutocompletable(password_element)) { |
742 return false; | 742 return false; |
743 } | 743 } |
744 | 744 |
745 password_info->password_was_edited_last = false; | 745 password_info->password_was_edited_last = false; |
746 if (element->isPasswordField()) { | 746 if (element->isPasswordField()) { |
747 password_info->password_field_suggestion_was_accepted = true; | 747 password_info->password_field_suggestion_was_accepted = true; |
748 password_info->password_field = password_element; | 748 password_info->password_field = password_element; |
749 } else if (!username_element.isNull() && | 749 } else if (!username_element.isNull() && |
750 IsElementAutocompletable(username_element)) { | 750 IsElementAutocompletable(username_element)) { |
751 username_element.setValue(blink::WebString::fromUTF16(username), true); | 751 username_element.setAutofillValue(blink::WebString::fromUTF16(username)); |
752 username_element.setAutofilled(true); | 752 username_element.setAutofilled(true); |
753 UpdateFieldValueAndPropertiesMaskMap(username_element, &username, | 753 UpdateFieldValueAndPropertiesMaskMap(username_element, &username, |
754 FieldPropertiesFlags::AUTOFILLED, | 754 FieldPropertiesFlags::AUTOFILLED, |
755 &field_value_and_properties_map_); | 755 &field_value_and_properties_map_); |
756 } | 756 } |
757 | 757 |
758 password_element.setValue(blink::WebString::fromUTF16(password), true); | 758 password_element.setAutofillValue(blink::WebString::fromUTF16(password)); |
759 password_element.setAutofilled(true); | 759 password_element.setAutofilled(true); |
760 UpdateFieldValueAndPropertiesMaskMap(password_element, &password, | 760 UpdateFieldValueAndPropertiesMaskMap(password_element, &password, |
761 FieldPropertiesFlags::AUTOFILLED, | 761 FieldPropertiesFlags::AUTOFILLED, |
762 &field_value_and_properties_map_); | 762 &field_value_and_properties_map_); |
763 | 763 |
764 blink::WebInputElement mutable_filled_element = *element; | 764 blink::WebInputElement mutable_filled_element = *element; |
765 mutable_filled_element.setSelectionRange(element->value().length(), | 765 mutable_filled_element.setSelectionRange(element->value().length(), |
766 element->value().length()); | 766 element->value().length()); |
767 | 767 |
768 return true; | 768 return true; |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1598 PasswordAutofillAgent::GetPasswordManagerDriver() { | 1598 PasswordAutofillAgent::GetPasswordManagerDriver() { |
1599 if (!password_manager_driver_) { | 1599 if (!password_manager_driver_) { |
1600 render_frame()->GetRemoteInterfaces()->GetInterface( | 1600 render_frame()->GetRemoteInterfaces()->GetInterface( |
1601 mojo::MakeRequest(&password_manager_driver_)); | 1601 mojo::MakeRequest(&password_manager_driver_)); |
1602 } | 1602 } |
1603 | 1603 |
1604 return password_manager_driver_; | 1604 return password_manager_driver_; |
1605 } | 1605 } |
1606 | 1606 |
1607 } // namespace autofill | 1607 } // namespace autofill |
OLD | NEW |