| 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/autofill_agent.h" | 5 #include "components/autofill/content/renderer/autofill_agent.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 } | 564 } |
| 565 | 565 |
| 566 void AutofillAgent::OnFillFieldWithValue(const base::string16& value) { | 566 void AutofillAgent::OnFillFieldWithValue(const base::string16& value) { |
| 567 WebInputElement* input_element = toWebInputElement(&element_); | 567 WebInputElement* input_element = toWebInputElement(&element_); |
| 568 if (input_element) { | 568 if (input_element) { |
| 569 FillFieldWithValue(value, input_element); | 569 FillFieldWithValue(value, input_element); |
| 570 input_element->setAutofilled(true); | 570 input_element->setAutofilled(true); |
| 571 } | 571 } |
| 572 } | 572 } |
| 573 | 573 |
| 574 void AutofillAgent::OnPreviewFieldWithValue(const base::string16& value) { | 574 void AutofillAgent::OnPreviewFieldWithValue(const base::string16& value, |
| 575 int match_start) { |
| 575 WebInputElement* input_element = toWebInputElement(&element_); | 576 WebInputElement* input_element = toWebInputElement(&element_); |
| 576 if (input_element) | 577 if (input_element) |
| 577 PreviewFieldWithValue(value, input_element); | 578 PreviewFieldWithValue(value, input_element, match_start); |
| 578 } | 579 } |
| 579 | 580 |
| 580 void AutofillAgent::OnAcceptDataListSuggestion(const base::string16& value) { | 581 void AutofillAgent::OnAcceptDataListSuggestion(const base::string16& value) { |
| 581 AcceptDataListSuggestion(value); | 582 AcceptDataListSuggestion(value); |
| 582 } | 583 } |
| 583 | 584 |
| 584 void AutofillAgent::OnFillPasswordSuggestion(const base::string16& username, | 585 void AutofillAgent::OnFillPasswordSuggestion(const base::string16& username, |
| 585 const base::string16& password) { | 586 const base::string16& password) { |
| 586 bool handled = password_autofill_agent_->FillSuggestion( | 587 bool handled = password_autofill_agent_->FillSuggestion( |
| 587 element_, | 588 element_, |
| 588 username, | 589 username, |
| 589 password); | 590 password); |
| 590 DCHECK(handled); | 591 DCHECK(handled); |
| 591 } | 592 } |
| 592 | 593 |
| 593 void AutofillAgent::OnPreviewPasswordSuggestion( | 594 void AutofillAgent::OnPreviewPasswordSuggestion(const base::string16& username, |
| 594 const base::string16& username, | 595 const base::string16& password, |
| 595 const base::string16& password) { | 596 int start) { |
| 596 bool handled = password_autofill_agent_->PreviewSuggestion( | 597 bool handled = password_autofill_agent_->PreviewSuggestion(element_, username, |
| 597 element_, | 598 password, start); |
| 598 username, | |
| 599 password); | |
| 600 DCHECK(handled); | 599 DCHECK(handled); |
| 601 } | 600 } |
| 602 | 601 |
| 603 void AutofillAgent::OnRequestAutocompleteResult( | 602 void AutofillAgent::OnRequestAutocompleteResult( |
| 604 WebFormElement::AutocompleteResult result, | 603 WebFormElement::AutocompleteResult result, |
| 605 const base::string16& message, | 604 const base::string16& message, |
| 606 const FormData& form_data) { | 605 const FormData& form_data) { |
| 607 if (in_flight_request_form_.isNull()) | 606 if (in_flight_request_form_.isNull()) |
| 608 return; | 607 return; |
| 609 | 608 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 routing_id(), autofill_query_id_, form, field, bounding_box_scaled)); | 728 routing_id(), autofill_query_id_, form, field, bounding_box_scaled)); |
| 730 } | 729 } |
| 731 | 730 |
| 732 void AutofillAgent::FillFieldWithValue(const base::string16& value, | 731 void AutofillAgent::FillFieldWithValue(const base::string16& value, |
| 733 WebInputElement* node) { | 732 WebInputElement* node) { |
| 734 base::AutoReset<bool> auto_reset(&ignore_text_changes_, true); | 733 base::AutoReset<bool> auto_reset(&ignore_text_changes_, true); |
| 735 node->setEditingValue(value.substr(0, node->maxLength())); | 734 node->setEditingValue(value.substr(0, node->maxLength())); |
| 736 } | 735 } |
| 737 | 736 |
| 738 void AutofillAgent::PreviewFieldWithValue(const base::string16& value, | 737 void AutofillAgent::PreviewFieldWithValue(const base::string16& value, |
| 739 WebInputElement* node) { | 738 WebInputElement* node, |
| 739 int match_start) { |
| 740 was_query_node_autofilled_ = element_.isAutofilled(); | 740 was_query_node_autofilled_ = element_.isAutofilled(); |
| 741 node->setSuggestedValue(value.substr(0, node->maxLength())); | 741 node->setSuggestedValue(value.substr(0, node->maxLength())); |
| 742 node->setAutofilled(true); | 742 node->setAutofilled(true); |
| 743 node->setSelectionRange(node->value().length(), | 743 node->setSelectionRange(std::min(match_start, node->maxLength()), |
| 744 node->suggestedValue().length()); | 744 node->suggestedValue().length()); |
| 745 } | 745 } |
| 746 | 746 |
| 747 void AutofillAgent::ProcessForms() { | 747 void AutofillAgent::ProcessForms() { |
| 748 // Record timestamp of when the forms are first seen. This is used to | 748 // Record timestamp of when the forms are first seen. This is used to |
| 749 // measure the overhead of the Autofill feature. | 749 // measure the overhead of the Autofill feature. |
| 750 base::TimeTicks forms_seen_timestamp = base::TimeTicks::Now(); | 750 base::TimeTicks forms_seen_timestamp = base::TimeTicks::Now(); |
| 751 | 751 |
| 752 WebLocalFrame* frame = render_frame()->GetWebFrame(); | 752 WebLocalFrame* frame = render_frame()->GetWebFrame(); |
| 753 std::vector<FormData> forms = form_cache_.ExtractNewForms(); | 753 std::vector<FormData> forms = form_cache_.ExtractNewForms(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 | 805 |
| 806 void AutofillAgent::LegacyAutofillAgent::OnDestruct() { | 806 void AutofillAgent::LegacyAutofillAgent::OnDestruct() { |
| 807 // No-op. Don't delete |this|. | 807 // No-op. Don't delete |this|. |
| 808 } | 808 } |
| 809 | 809 |
| 810 void AutofillAgent::LegacyAutofillAgent::FocusChangeComplete() { | 810 void AutofillAgent::LegacyAutofillAgent::FocusChangeComplete() { |
| 811 agent_->FocusChangeComplete(); | 811 agent_->FocusChangeComplete(); |
| 812 } | 812 } |
| 813 | 813 |
| 814 } // namespace autofill | 814 } // namespace autofill |
| OLD | NEW |