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

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

Issue 16286020: Abstract WebContentsObserver from Autofill shared code (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Nit 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 16 matching lines...) Expand all
27 #include "chrome/common/pref_names.h" 27 #include "chrome/common/pref_names.h"
28 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 28 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
29 #include "chrome/test/base/testing_profile.h" 29 #include "chrome/test/base/testing_profile.h"
30 #include "components/autofill/browser/autocomplete_history_manager.h" 30 #include "components/autofill/browser/autocomplete_history_manager.h"
31 #include "components/autofill/browser/autofill_common_test.h" 31 #include "components/autofill/browser/autofill_common_test.h"
32 #include "components/autofill/browser/autofill_manager.h" 32 #include "components/autofill/browser/autofill_manager.h"
33 #include "components/autofill/browser/autofill_metrics.h" 33 #include "components/autofill/browser/autofill_metrics.h"
34 #include "components/autofill/browser/autofill_profile.h" 34 #include "components/autofill/browser/autofill_profile.h"
35 #include "components/autofill/browser/credit_card.h" 35 #include "components/autofill/browser/credit_card.h"
36 #include "components/autofill/browser/personal_data_manager.h" 36 #include "components/autofill/browser/personal_data_manager.h"
37 #include "components/autofill/browser/test_autofill_driver.h"
37 #include "components/autofill/browser/test_autofill_external_delegate.h" 38 #include "components/autofill/browser/test_autofill_external_delegate.h"
38 #include "components/autofill/browser/test_autofill_manager_delegate.h" 39 #include "components/autofill/browser/test_autofill_manager_delegate.h"
39 #include "components/autofill/common/autofill_messages.h" 40 #include "components/autofill/common/autofill_messages.h"
40 #include "components/autofill/common/form_data.h" 41 #include "components/autofill/common/form_data.h"
41 #include "components/autofill/common/form_field_data.h" 42 #include "components/autofill/common/form_field_data.h"
42 #include "components/autofill/common/forms_seen_state.h" 43 #include "components/autofill/common/forms_seen_state.h"
43 #include "components/user_prefs/user_prefs.h" 44 #include "components/user_prefs/user_prefs.h"
44 #include "content/public/browser/web_contents.h" 45 #include "content/public/browser/web_contents.h"
45 #include "content/public/test/mock_render_process_host.h" 46 #include "content/public/test/mock_render_process_host.h"
46 #include "content/public/test/test_utils.h" 47 #include "content/public/test/test_utils.h"
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 const char* year, 475 const char* year,
475 const char* month) { 476 const char* month) {
476 ExpectFilledForm(page_id, filled_form, expected_page_id, 477 ExpectFilledForm(page_id, filled_form, expected_page_id,
477 "", "", "", "", "", "", "", "", "", "", "", 478 "", "", "", "", "", "", "", "", "", "", "",
478 "Miku Hatsune", "4234567890654321", month, year, 479 "Miku Hatsune", "4234567890654321", month, year,
479 has_address_fields, true, true); 480 has_address_fields, true, true);
480 } 481 }
481 482
482 class TestAutofillManager : public AutofillManager { 483 class TestAutofillManager : public AutofillManager {
483 public: 484 public:
484 TestAutofillManager(content::WebContents* web_contents, 485 TestAutofillManager(AutofillDriver* driver,
485 autofill::AutofillManagerDelegate* delegate, 486 autofill::AutofillManagerDelegate* delegate,
486 TestPersonalDataManager* personal_data) 487 TestPersonalDataManager* personal_data)
487 : AutofillManager(web_contents, delegate, personal_data), 488 : AutofillManager(driver, delegate, personal_data),
488 personal_data_(personal_data), 489 personal_data_(personal_data),
489 autofill_enabled_(true) {} 490 autofill_enabled_(true) {}
490 virtual ~TestAutofillManager() {} 491 virtual ~TestAutofillManager() {}
491 492
492 virtual bool IsAutofillEnabled() const OVERRIDE { return autofill_enabled_; } 493 virtual bool IsAutofillEnabled() const OVERRIDE { return autofill_enabled_; }
493 494
494 void set_autofill_enabled(bool autofill_enabled) { 495 void set_autofill_enabled(bool autofill_enabled) {
495 autofill_enabled_ = autofill_enabled; 496 autofill_enabled_ = autofill_enabled;
496 } 497 }
497 498
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 profile->CreateRequestContext(); 654 profile->CreateRequestContext();
654 browser_context_.reset(profile); 655 browser_context_.reset(profile);
655 autofill::PersonalDataManagerFactory::GetInstance()->SetTestingFactory( 656 autofill::PersonalDataManagerFactory::GetInstance()->SetTestingFactory(
656 profile, TestPersonalDataManager::Build); 657 profile, TestPersonalDataManager::Build);
657 658
658 ChromeRenderViewHostTestHarness::SetUp(); 659 ChromeRenderViewHostTestHarness::SetUp();
659 660
660 autofill::TabAutofillManagerDelegate::CreateForWebContents(web_contents()); 661 autofill::TabAutofillManagerDelegate::CreateForWebContents(web_contents());
661 662
662 personal_data_.SetBrowserContext(profile); 663 personal_data_.SetBrowserContext(profile);
664 autofill_driver_.reset(new TestAutofillDriver(web_contents()));
663 autofill_manager_.reset(new TestAutofillManager( 665 autofill_manager_.reset(new TestAutofillManager(
664 web_contents(), 666 autofill_driver_.get(),
665 autofill::TabAutofillManagerDelegate::FromWebContents(web_contents()), 667 autofill::TabAutofillManagerDelegate::FromWebContents(web_contents()),
666 &personal_data_)); 668 &personal_data_));
667 } 669 }
668 670
669 virtual void TearDown() OVERRIDE { 671 virtual void TearDown() OVERRIDE {
670 // Order of destruction is important as AutofillManager relies on 672 // Order of destruction is important as AutofillManager relies on
671 // PersonalDataManager to be around when it gets destroyed. Also, a real 673 // PersonalDataManager to be around when it gets destroyed. Also, a real
672 // AutofillManager is tied to the lifetime of the WebContents, so it must 674 // AutofillManager is tied to the lifetime of the WebContents, so it must
673 // be destroyed at the destruction of the WebContents. 675 // be destroyed at the destruction of the WebContents.
674 autofill_manager_.reset(); 676 autofill_manager_.reset();
677 autofill_driver_.reset();
675 ChromeRenderViewHostTestHarness::TearDown(); 678 ChromeRenderViewHostTestHarness::TearDown();
676 679
677 // Remove the BrowserContext so TestPersonalDataManager does not need to 680 // Remove the BrowserContext so TestPersonalDataManager does not need to
678 // care about removing self as an observer in destruction. 681 // care about removing self as an observer in destruction.
679 personal_data_.SetBrowserContext(NULL); 682 personal_data_.SetBrowserContext(NULL);
680 } 683 }
681 684
682 virtual TestingProfile* CreateProfile() { 685 virtual TestingProfile* CreateProfile() {
683 return new TestingProfile(); 686 return new TestingProfile();
684 } 687 }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 if (page_id) 785 if (page_id)
783 *page_id = autofill_param.a; 786 *page_id = autofill_param.a;
784 if (results) 787 if (results)
785 *results = autofill_param.b; 788 *results = autofill_param.b;
786 789
787 process()->sink().ClearMessages(); 790 process()->sink().ClearMessages();
788 return true; 791 return true;
789 } 792 }
790 793
791 protected: 794 protected:
795 scoped_ptr<TestAutofillDriver> autofill_driver_;
792 scoped_ptr<TestAutofillManager> autofill_manager_; 796 scoped_ptr<TestAutofillManager> autofill_manager_;
793 TestPersonalDataManager personal_data_; 797 TestPersonalDataManager personal_data_;
794 798
795 // Used when we want an off the record profile. This will store the original 799 // Used when we want an off the record profile. This will store the original
796 // profile from which the off the record profile is derived. 800 // profile from which the off the record profile is derived.
797 scoped_ptr<Profile> other_browser_context_; 801 scoped_ptr<Profile> other_browser_context_;
798 }; 802 };
799 803
800 class TestFormStructure : public FormStructure { 804 class TestFormStructure : public FormStructure {
801 public: 805 public:
(...skipping 15 matching lines...) Expand all
817 821
818 UpdateAutofillCount(); 822 UpdateAutofillCount();
819 } 823 }
820 824
821 private: 825 private:
822 DISALLOW_COPY_AND_ASSIGN(TestFormStructure); 826 DISALLOW_COPY_AND_ASSIGN(TestFormStructure);
823 }; 827 };
824 828
825 // Test that browser asks for all forms when Autocheckout is enabled. 829 // Test that browser asks for all forms when Autocheckout is enabled.
826 TEST_F(AutofillManagerTest, GetAllForms) { 830 TEST_F(AutofillManagerTest, GetAllForms) {
831 /*
827 FormData form; 832 FormData form;
828 CreateTestAddressFormData(&form); 833 CreateTestAddressFormData(&form);
829 std::vector<FormData> forms(1, form); 834 std::vector<FormData> forms(1, form);
830 // Enable autocheckout. 835 // Enable autocheckout.
831 autofill_manager_->set_autocheckout_url_prefix("test-prefix"); 836 autofill_manager_->set_autocheckout_url_prefix("test-prefix");
832 837
833 PartialFormsSeen(forms); 838 PartialFormsSeen(forms);
834 839
835 ASSERT_TRUE(HasSeenAutofillGetAllFormsMessage()); 840 ASSERT_TRUE(HasSeenAutofillGetAllFormsMessage());
841 */
Ilya Sherman 2013/06/12 00:07:46 Why is this test commented out?
blundell 2013/06/12 16:29:37 Cruft from debugging! Thanks. On 2013/06/12 00:07
836 } 842 }
837 843
838 // Test that we return all address profile suggestions when all form fields are 844 // Test that we return all address profile suggestions when all form fields are
839 // empty. 845 // empty.
840 TEST_F(AutofillManagerTest, GetProfileSuggestionsEmptyValue) { 846 TEST_F(AutofillManagerTest, GetProfileSuggestionsEmptyValue) {
841 // Set up our form data. 847 // Set up our form data.
842 FormData form; 848 FormData form;
843 CreateTestAddressFormData(&form); 849 CreateTestAddressFormData(&form);
844 std::vector<FormData> forms(1, form); 850 std::vector<FormData> forms(1, form);
845 FormsSeen(forms); 851 FormsSeen(forms);
(...skipping 2363 matching lines...) Expand 10 before | Expand all | Expand 10 after
3209 private: 3215 private:
3210 DISALLOW_COPY_AND_ASSIGN(MockAutofillExternalDelegate); 3216 DISALLOW_COPY_AND_ASSIGN(MockAutofillExternalDelegate);
3211 }; 3217 };
3212 3218
3213 } // namespace 3219 } // namespace
3214 3220
3215 // Test that Autocheckout bubble is offered when server specifies field types. 3221 // Test that Autocheckout bubble is offered when server specifies field types.
3216 TEST_F(AutofillManagerTest, TestBubbleShown) { 3222 TEST_F(AutofillManagerTest, TestBubbleShown) {
3217 MockAutofillManagerDelegate delegate; 3223 MockAutofillManagerDelegate delegate;
3218 autofill_manager_.reset(new TestAutofillManager( 3224 autofill_manager_.reset(new TestAutofillManager(
3219 web_contents(), &delegate, &personal_data_)); 3225 autofill_driver_.get(), &delegate, &personal_data_));
3220 autofill_manager_->set_autofill_enabled(true); 3226 autofill_manager_->set_autofill_enabled(true);
3221 autofill_manager_->MarkAsFirstPageInAutocheckoutFlow(); 3227 autofill_manager_->MarkAsFirstPageInAutocheckoutFlow();
3222 3228
3223 EXPECT_CALL(delegate, ShowAutocheckoutBubble(_, _, _)); 3229 EXPECT_CALL(delegate, ShowAutocheckoutBubble(_, _, _));
3224 3230
3225 FormData form; 3231 FormData form;
3226 CreateTestAddressFormData(&form); 3232 CreateTestAddressFormData(&form);
3227 3233
3228 TestFormStructure* form_structure = new TestFormStructure(form); 3234 TestFormStructure* form_structure = new TestFormStructure(form);
3229 AutofillMetrics metrics_logger; // ignored 3235 AutofillMetrics metrics_logger; // ignored
3230 form_structure->DetermineHeuristicTypes(metrics_logger); 3236 form_structure->DetermineHeuristicTypes(metrics_logger);
3231 3237
3232 // Build and add form structure with server data. 3238 // Build and add form structure with server data.
3233 std::vector<AutofillFieldType> heuristic_types, server_types; 3239 std::vector<AutofillFieldType> heuristic_types, server_types;
3234 for (size_t i = 0; i < form.fields.size(); ++i) { 3240 for (size_t i = 0; i < form.fields.size(); ++i) {
3235 heuristic_types.push_back(UNKNOWN_TYPE); 3241 heuristic_types.push_back(UNKNOWN_TYPE);
3236 server_types.push_back(form_structure->field(i)->type()); 3242 server_types.push_back(form_structure->field(i)->type());
3237 } 3243 }
3238 form_structure->SetFieldTypes(heuristic_types, server_types); 3244 form_structure->SetFieldTypes(heuristic_types, server_types);
3239 autofill_manager_->AddSeenForm(form_structure); 3245 autofill_manager_->AddSeenForm(form_structure);
3240 3246
3241 autofill_manager_->OnMaybeShowAutocheckoutBubble(form, gfx::RectF()); 3247 autofill_manager_->OnMaybeShowAutocheckoutBubble(form, gfx::RectF());
3242 } 3248 }
3243 3249
3244 // Test that Autocheckout bubble is not offered when server doesn't have data 3250 // Test that Autocheckout bubble is not offered when server doesn't have data
3245 // for the form. 3251 // for the form.
3246 TEST_F(AutofillManagerTest, TestAutocheckoutBubbleNotShown) { 3252 TEST_F(AutofillManagerTest, TestAutocheckoutBubbleNotShown) {
3247 MockAutofillManagerDelegate delegate; 3253 MockAutofillManagerDelegate delegate;
3248 autofill_manager_.reset(new TestAutofillManager( 3254 autofill_manager_.reset(new TestAutofillManager(
3249 web_contents(), &delegate, &personal_data_)); 3255 autofill_driver_.get(), &delegate, &personal_data_));
3250 autofill_manager_->set_autofill_enabled(true); 3256 autofill_manager_->set_autofill_enabled(true);
3251 autofill_manager_->MarkAsFirstPageInAutocheckoutFlow(); 3257 autofill_manager_->MarkAsFirstPageInAutocheckoutFlow();
3252 3258
3253 FormData form; 3259 FormData form;
3254 CreateTestAddressFormData(&form); 3260 CreateTestAddressFormData(&form);
3255 3261
3256 TestFormStructure* form_structure = new TestFormStructure(form); 3262 TestFormStructure* form_structure = new TestFormStructure(form);
3257 AutofillMetrics metrics_logger; // ignored 3263 AutofillMetrics metrics_logger; // ignored
3258 form_structure->DetermineHeuristicTypes(metrics_logger); 3264 form_structure->DetermineHeuristicTypes(metrics_logger);
3259 3265
(...skipping 20 matching lines...) Expand all
3280 CreateTestAddressFormData(&form); 3286 CreateTestAddressFormData(&form);
3281 std::vector<FormData> forms(1, form); 3287 std::vector<FormData> forms(1, form);
3282 FormsSeen(forms); 3288 FormsSeen(forms);
3283 const FormFieldData& field = form.fields[0]; 3289 const FormFieldData& field = form.fields[0];
3284 GetAutofillSuggestions(form, field); // should call the delegate's OnQuery() 3290 GetAutofillSuggestions(form, field); // should call the delegate's OnQuery()
3285 3291
3286 autofill_manager_->SetExternalDelegate(NULL); 3292 autofill_manager_->SetExternalDelegate(NULL);
3287 } 3293 }
3288 3294
3289 } // namespace autofill 3295 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698