Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: components/autofill/content/renderer/password_autofill_agent.cc

Issue 133893004: Allow deleting autofill password suggestions on Shift+Delete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ToT Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 password_forms)); 442 password_forms));
443 } else { 443 } else {
444 Send(new AutofillHostMsg_PasswordFormsParsed(routing_id(), password_forms)); 444 Send(new AutofillHostMsg_PasswordFormsParsed(routing_id(), password_forms));
445 } 445 }
446 } 446 }
447 447
448 bool PasswordAutofillAgent::OnMessageReceived(const IPC::Message& message) { 448 bool PasswordAutofillAgent::OnMessageReceived(const IPC::Message& message) {
449 bool handled = true; 449 bool handled = true;
450 IPC_BEGIN_MESSAGE_MAP(PasswordAutofillAgent, message) 450 IPC_BEGIN_MESSAGE_MAP(PasswordAutofillAgent, message)
451 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordForm, OnFillPasswordForm) 451 IPC_MESSAGE_HANDLER(AutofillMsg_FillPasswordForm, OnFillPasswordForm)
452 IPC_MESSAGE_HANDLER(AutofillMsg_RemovePasswordSuggestion,
453 OnRemovePasswordSuggestion)
452 IPC_MESSAGE_UNHANDLED(handled = false) 454 IPC_MESSAGE_UNHANDLED(handled = false)
453 IPC_END_MESSAGE_MAP() 455 IPC_END_MESSAGE_MAP()
454 return handled; 456 return handled;
455 } 457 }
456 458
457 void PasswordAutofillAgent::DidStartLoading() { 459 void PasswordAutofillAgent::DidStartLoading() {
458 if (usernames_usage_ != NOTHING_TO_AUTOFILL) { 460 if (usernames_usage_ != NOTHING_TO_AUTOFILL) {
459 UMA_HISTOGRAM_ENUMERATION("PasswordManager.OtherPossibleUsernamesUsage", 461 UMA_HISTOGRAM_ENUMERATION("PasswordManager.OtherPossibleUsernamesUsage",
460 usernames_usage_, OTHER_POSSIBLE_USERNAMES_MAX); 462 usernames_usage_, OTHER_POSSIBLE_USERNAMES_MAX);
461 usernames_usage_ = NOTHING_TO_AUTOFILL; 463 usernames_usage_ = NOTHING_TO_AUTOFILL;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 FormData form; 640 FormData form;
639 FormFieldData field; 641 FormFieldData field;
640 FindFormAndFieldForInputElement( 642 FindFormAndFieldForInputElement(
641 username_element, &form, &field, REQUIRE_NONE); 643 username_element, &form, &field, REQUIRE_NONE);
642 Send(new AutofillHostMsg_AddPasswordFormMapping( 644 Send(new AutofillHostMsg_AddPasswordFormMapping(
643 routing_id(), 645 routing_id(),
644 field, 646 field,
645 form_data)); 647 form_data));
646 } 648 }
647 } 649 }
650 void PasswordAutofillAgent::OnRemovePasswordSuggestion(
651 const PasswordForm& password_form) {
652
653 std::vector<PasswordForm> updated_password_forms;
654
655 LoginToPasswordInfoMap::iterator iter;
656 for (iter = login_to_password_info_.begin();
657 iter != login_to_password_info_.end();) {
658 scoped_ptr<PasswordForm> new_password_form(
659 CreatePasswordForm(iter->second.password_field.form()));
660 if (new_password_form.get()) {
vabr (Chromium) 2014/04/01 16:56:08 Should we also test if new_password_form is simila
rchtara 2014/04/03 08:44:50 I'm sure but i think it better to leave that to th
661 login_to_password_info_.erase(iter++);
662 updated_password_forms.push_back(*new_password_form);
663 } else {
664 ++iter;
665 }
666 }
667
668 Send(new AutofillHostMsg_RemovePasswordSuggestion(
669 routing_id(), password_form, updated_password_forms));
670 }
648 671
649 //////////////////////////////////////////////////////////////////////////////// 672 ////////////////////////////////////////////////////////////////////////////////
650 // PasswordAutofillAgent, private: 673 // PasswordAutofillAgent, private:
651 674
652 void PasswordAutofillAgent::GetSuggestions( 675 void PasswordAutofillAgent::GetSuggestions(
653 const PasswordFormFillData& fill_data, 676 const PasswordFormFillData& fill_data,
654 const base::string16& input, 677 const base::string16& input,
655 std::vector<base::string16>* suggestions, 678 std::vector<base::string16>* suggestions,
656 std::vector<base::string16>* realms) { 679 std::vector<base::string16>* realms) {
657 if (StartsWith(fill_data.basic_data.fields[0].value, input, false)) { 680 if (StartsWith(fill_data.basic_data.fields[0].value, input, false)) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 std::vector<base::string16> suggestions; 718 std::vector<base::string16> suggestions;
696 std::vector<base::string16> realms; 719 std::vector<base::string16> realms;
697 GetSuggestions(fill_data, user_input.value(), &suggestions, &realms); 720 GetSuggestions(fill_data, user_input.value(), &suggestions, &realms);
698 DCHECK_EQ(suggestions.size(), realms.size()); 721 DCHECK_EQ(suggestions.size(), realms.size());
699 722
700 FormData form; 723 FormData form;
701 FormFieldData field; 724 FormFieldData field;
702 FindFormAndFieldForInputElement( 725 FindFormAndFieldForInputElement(
703 user_input, &form, &field, REQUIRE_NONE); 726 user_input, &form, &field, REQUIRE_NONE);
704 727
728 scoped_ptr<PasswordForm> password_form =
729 CreatePasswordForm(user_input.form());
vabr (Chromium) 2014/04/01 17:14:35 To record, what we just spoke about: instead of cr
rchtara 2014/04/03 08:44:50 Done.
730 DCHECK(password_form);
731
705 blink::WebInputElement selected_element = user_input; 732 blink::WebInputElement selected_element = user_input;
706 gfx::Rect bounding_box(selected_element.boundsInViewportSpace()); 733 gfx::Rect bounding_box(selected_element.boundsInViewportSpace());
707 734
708 float scale = web_view_->pageScaleFactor(); 735 float scale = web_view_->pageScaleFactor();
709 gfx::RectF bounding_box_scaled(bounding_box.x() * scale, 736 gfx::RectF bounding_box_scaled(bounding_box.x() * scale,
710 bounding_box.y() * scale, 737 bounding_box.y() * scale,
711 bounding_box.width() * scale, 738 bounding_box.width() * scale,
712 bounding_box.height() * scale); 739 bounding_box.height() * scale);
713 Send(new AutofillHostMsg_ShowPasswordSuggestions(routing_id(), 740 Send(new AutofillHostMsg_ShowPasswordSuggestions(routing_id(),
714 field, 741 field,
742 *password_form,
715 bounding_box_scaled, 743 bounding_box_scaled,
716 suggestions, 744 suggestions,
717 realms)); 745 realms));
718 return !suggestions.empty(); 746 return !suggestions.empty();
719 } 747 }
720 748
721 void PasswordAutofillAgent::FillFormOnPasswordRecieved( 749 void PasswordAutofillAgent::FillFormOnPasswordRecieved(
722 const PasswordFormFillData& fill_data, 750 const PasswordFormFillData& fill_data,
723 blink::WebInputElement username_element, 751 blink::WebInputElement username_element,
724 blink::WebInputElement password_element) { 752 blink::WebInputElement password_element) {
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(input); 933 LoginToPasswordInfoMap::iterator iter = login_to_password_info_.find(input);
906 if (iter == login_to_password_info_.end()) 934 if (iter == login_to_password_info_.end())
907 return false; 935 return false;
908 936
909 *found_input = input; 937 *found_input = input;
910 *found_password = iter->second; 938 *found_password = iter->second;
911 return true; 939 return true;
912 } 940 }
913 941
914 } // namespace autofill 942 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698