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

Side by Side Diff: components/autofill/browser/autofill_manager_unittest.cc

Issue 15097004: Enable Autocomplete feature for chromium webview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@setSaveFormData2
Patch Set: address nits Created 7 years, 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 int expected_page_id, 473 int expected_page_id,
474 bool has_address_fields, 474 bool has_address_fields,
475 const char* year, 475 const char* year,
476 const char* month) { 476 const char* month) {
477 ExpectFilledForm(page_id, filled_form, expected_page_id, 477 ExpectFilledForm(page_id, filled_form, expected_page_id,
478 "", "", "", "", "", "", "", "", "", "", "", 478 "", "", "", "", "", "", "", "", "", "", "",
479 "Miku Hatsune", "4234567890654321", month, year, 479 "Miku Hatsune", "4234567890654321", month, year,
480 has_address_fields, true, true); 480 has_address_fields, true, true);
481 } 481 }
482 482
483 class MockAutocompleteHistoryManager : public AutocompleteHistoryManager {
484 public:
485 MockAutocompleteHistoryManager(AutofillDriver* driver,
486 AutofillManagerDelegate* delegate)
487 : AutocompleteHistoryManager(driver, delegate) {}
488
489 MOCK_METHOD1(OnFormSubmitted, void(const FormData& form));
490
491 private:
492 DISALLOW_COPY_AND_ASSIGN(MockAutocompleteHistoryManager);
493 };
494
483 class TestAutofillManager : public AutofillManager { 495 class TestAutofillManager : public AutofillManager {
484 public: 496 public:
485 TestAutofillManager(AutofillDriver* driver, 497 TestAutofillManager(AutofillDriver* driver,
486 autofill::AutofillManagerDelegate* delegate, 498 autofill::AutofillManagerDelegate* delegate,
487 TestPersonalDataManager* personal_data) 499 TestPersonalDataManager* personal_data)
488 : AutofillManager(driver, delegate, personal_data), 500 : AutofillManager(driver, delegate, personal_data),
489 personal_data_(personal_data), 501 personal_data_(personal_data),
490 autofill_enabled_(true) {} 502 autofill_enabled_(true) {}
491 virtual ~TestAutofillManager() {} 503 virtual ~TestAutofillManager() {}
492 504
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 false); 708 false);
697 } 709 }
698 710
699 void GetAutofillSuggestions(const FormData& form, 711 void GetAutofillSuggestions(const FormData& form,
700 const FormFieldData& field) { 712 const FormFieldData& field) {
701 GetAutofillSuggestions(kDefaultPageID, form, field); 713 GetAutofillSuggestions(kDefaultPageID, form, field);
702 } 714 }
703 715
704 void AutocompleteSuggestionsReturned( 716 void AutocompleteSuggestionsReturned(
705 const std::vector<base::string16>& result) { 717 const std::vector<base::string16>& result) {
706 autofill_manager_->autocomplete_history_manager_.SendSuggestions(&result); 718 autofill_manager_->autocomplete_history_manager_->SendSuggestions(&result);
707 } 719 }
708 720
709 void FormsSeen(const std::vector<FormData>& forms) { 721 void FormsSeen(const std::vector<FormData>& forms) {
710 autofill_manager_->OnFormsSeen(forms, base::TimeTicks(), 722 autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
711 autofill::NO_SPECIAL_FORMS_SEEN); 723 autofill::NO_SPECIAL_FORMS_SEEN);
712 } 724 }
713 725
714 void PartialFormsSeen(const std::vector<FormData>& forms) { 726 void PartialFormsSeen(const std::vector<FormData>& forms) {
715 autofill_manager_->OnFormsSeen(forms, base::TimeTicks(), 727 autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
716 autofill::PARTIAL_FORMS_SEEN); 728 autofill::PARTIAL_FORMS_SEEN);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 *page_id = autofill_param.a; 767 *page_id = autofill_param.a;
756 if (values) 768 if (values)
757 *values = autofill_param.b; 769 *values = autofill_param.b;
758 if (labels) 770 if (labels)
759 *labels = autofill_param.c; 771 *labels = autofill_param.c;
760 if (icons) 772 if (icons)
761 *icons = autofill_param.d; 773 *icons = autofill_param.d;
762 if (unique_ids) 774 if (unique_ids)
763 *unique_ids = autofill_param.e; 775 *unique_ids = autofill_param.e;
764 776
765 autofill_manager_->autocomplete_history_manager_.CancelPendingQuery(); 777 autofill_manager_->autocomplete_history_manager_->CancelPendingQuery();
766 process()->sink().ClearMessages(); 778 process()->sink().ClearMessages();
767 return true; 779 return true;
768 } 780 }
769 781
770 bool HasSeenAutofillGetAllFormsMessage() { 782 bool HasSeenAutofillGetAllFormsMessage() {
771 const uint32 kMsgID = AutofillMsg_GetAllForms::ID; 783 const uint32 kMsgID = AutofillMsg_GetAllForms::ID;
772 const IPC::Message* message = 784 const IPC::Message* message =
773 process()->sink().GetFirstMessageMatching(kMsgID); 785 process()->sink().GetFirstMessageMatching(kMsgID);
774 return message != NULL; 786 return message != NULL;
775 } 787 }
(...skipping 1926 matching lines...) Expand 10 before | Expand all | Expand 10 after
2702 FormData results; 2714 FormData results;
2703 EXPECT_TRUE(GetAutofillFormDataFilledMessage(&page_id, &results)); 2715 EXPECT_TRUE(GetAutofillFormDataFilledMessage(&page_id, &results));
2704 ExpectFilledAddressFormElvis(page_id, results, kDefaultPageID, false); 2716 ExpectFilledAddressFormElvis(page_id, results, kDefaultPageID, false);
2705 2717
2706 // Simulate form submission. We should call into the PDM to try to save the 2718 // Simulate form submission. We should call into the PDM to try to save the
2707 // filled data. 2719 // filled data.
2708 EXPECT_CALL(personal_data_, SaveImportedProfile(::testing::_)).Times(1); 2720 EXPECT_CALL(personal_data_, SaveImportedProfile(::testing::_)).Times(1);
2709 FormSubmitted(results); 2721 FormSubmitted(results);
2710 } 2722 }
2711 2723
2724 // Test that when Autocomplete is enabled and Autofill is disabled,
2725 // form submissions are still received by AutocompleteHistoryManager.
2726 TEST_F(AutofillManagerTest, FormSubmittedAutocompleteEnabled) {
2727 TestAutofillManagerDelegate delegate;
2728 autofill_manager_.reset(new TestAutofillManager(
2729 autofill_driver_.get(),
2730 &delegate,
2731 NULL));
2732 autofill_manager_->set_autofill_enabled(false);
2733 scoped_ptr<MockAutocompleteHistoryManager> autocomplete_history_manager;
2734 autocomplete_history_manager.reset(
2735 new MockAutocompleteHistoryManager(autofill_driver_.get(), &delegate));
2736 autofill_manager_->autocomplete_history_manager_.reset(
2737 autocomplete_history_manager.get());
Ilya Sherman 2013/06/19 23:19:55 Pretty sure this needs to be .Pass(), or else you'
sgurun-gerrit only 2013/06/20 15:18:44 You are right. thanks. On 2013/06/19 23:19:55, Il
2738
2739 // Set up our form data.
2740 FormData form;
2741 CreateTestAddressFormData(&form);
2742 form.method = ASCIIToUTF16("GET");
2743 FormSubmitted(form);
2744 EXPECT_CALL(*(autocomplete_history_manager.get()),
2745 OnFormSubmitted(_)).Times(1);
Ilya Sherman 2013/06/19 23:19:55 I'm pretty sure this is supposed to go *before* th
sgurun-gerrit only 2013/06/20 15:18:44 Done.
2746 }
2747
2748 // Test that when Autocomplete is enabled and Autofill is disabled,
2749 // Autocomplete suggestions are still received.
2750 TEST_F(AutofillManagerTest, AutocompleteSuggestionsWhenAutofillDisabled) {
2751 TestAutofillManagerDelegate delegate;
2752 autofill_manager_.reset(new TestAutofillManager(
2753 autofill_driver_.get(),
2754 &delegate,
2755 NULL));
2756 autofill_manager_->set_autofill_enabled(false);
2757
2758 // Set up our form data.
2759 FormData form;
2760 CreateTestAddressFormData(&form);
2761 form.method = ASCIIToUTF16("GET");
2762 std::vector<FormData> forms(1, form);
2763 FormsSeen(forms);
2764 const FormFieldData& field = form.fields[0];
2765 GetAutofillSuggestions(form, field);
2766
2767 // Add some Autocomplete suggestions. We should return the autocomplete
2768 // suggestions, these will be culled by the renderer.
2769 std::vector<base::string16> suggestions;
2770 suggestions.push_back(ASCIIToUTF16("Jay"));
2771 suggestions.push_back(ASCIIToUTF16("Jason"));
2772 AutocompleteSuggestionsReturned(suggestions);
2773
2774 int page_id = 0;
2775 std::vector<base::string16> values;
2776 std::vector<base::string16> labels;
2777 std::vector<base::string16> icons;
2778 std::vector<int> unique_ids;
2779 EXPECT_TRUE(GetAutofillSuggestionsMessage(&page_id, &values, &labels, &icons,
2780 &unique_ids));
2781
2782 base::string16 expected_values[] = {
2783 ASCIIToUTF16("Jay"),
2784 ASCIIToUTF16("Jason")
2785 };
2786 base::string16 expected_labels[] = { base::string16(), base::string16()};
2787 base::string16 expected_icons[] = { base::string16(), base::string16()};
2788 int expected_unique_ids[] = {0, 0};
2789 ExpectSuggestions(page_id, values, labels, icons, unique_ids,
2790 kDefaultPageID, arraysize(expected_values), expected_values,
2791 expected_labels, expected_icons, expected_unique_ids);
2792 }
2793
2712 // Test that we are able to save form data when forms are submitted and we only 2794 // Test that we are able to save form data when forms are submitted and we only
2713 // have server data for the field types. 2795 // have server data for the field types.
2714 TEST_F(AutofillManagerTest, FormSubmittedServerTypes) { 2796 TEST_F(AutofillManagerTest, FormSubmittedServerTypes) {
2715 // Set up our form data. 2797 // Set up our form data.
2716 FormData form; 2798 FormData form;
2717 CreateTestAddressFormData(&form); 2799 CreateTestAddressFormData(&form);
2718 2800
2719 // Simulate having seen this form on page load. 2801 // Simulate having seen this form on page load.
2720 // |form_structure| will be owned by |autofill_manager_|. 2802 // |form_structure| will be owned by |autofill_manager_|.
2721 TestFormStructure* form_structure = new TestFormStructure(form); 2803 TestFormStructure* form_structure = new TestFormStructure(form);
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
3284 CreateTestAddressFormData(&form); 3366 CreateTestAddressFormData(&form);
3285 std::vector<FormData> forms(1, form); 3367 std::vector<FormData> forms(1, form);
3286 FormsSeen(forms); 3368 FormsSeen(forms);
3287 const FormFieldData& field = form.fields[0]; 3369 const FormFieldData& field = form.fields[0];
3288 GetAutofillSuggestions(form, field); // should call the delegate's OnQuery() 3370 GetAutofillSuggestions(form, field); // should call the delegate's OnQuery()
3289 3371
3290 autofill_manager_->SetExternalDelegate(NULL); 3372 autofill_manager_->SetExternalDelegate(NULL);
3291 } 3373 }
3292 3374
3293 } // namespace autofill 3375 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/browser/autofill_manager_delegate.h ('k') | components/autofill/browser/test_autofill_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698