Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
| 10 #include "base/string16.h" | 10 #include "base/string16.h" |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 481 MessageLoop::current()->Run(); | 481 MessageLoop::current()->Run(); |
| 482 } else { | 482 } else { |
| 483 did_finish_async_form_submit_ = false; | 483 did_finish_async_form_submit_ = false; |
| 484 } | 484 } |
| 485 } | 485 } |
| 486 | 486 |
| 487 virtual void UploadFormData(const FormStructure& submitted_form) OVERRIDE { | 487 virtual void UploadFormData(const FormStructure& submitted_form) OVERRIDE { |
| 488 submitted_form_signature_ = submitted_form.FormSignature(); | 488 submitted_form_signature_ = submitted_form.FormSignature(); |
| 489 } | 489 } |
| 490 | 490 |
| 491 virtual void SendPasswordSyncStateToRenderer( | 491 virtual void SendPasswordGenerationStateToRenderer( |
| 492 content::RenderViewHost* host, bool enabled) OVERRIDE { | 492 content::RenderViewHost* host, bool enabled) OVERRIDE { |
| 493 sent_states_.push_back(enabled); | 493 sent_states_.push_back(enabled); |
| 494 } | 494 } |
| 495 | 495 |
| 496 const std::vector<bool>& GetSentStates() { | 496 const std::vector<bool>& GetSentStates() { |
| 497 return sent_states_; | 497 return sent_states_; |
| 498 } | 498 } |
| 499 | 499 |
| 500 void ClearSentStates() { | 500 void ClearSentStates() { |
| 501 sent_states_.clear(); | 501 sent_states_.clear(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 559 file_thread_(BrowserThread::FILE) { | 559 file_thread_(BrowserThread::FILE) { |
| 560 } | 560 } |
| 561 | 561 |
| 562 virtual ~AutofillManagerTest() { | 562 virtual ~AutofillManagerTest() { |
| 563 // Order of destruction is important as AutofillManager relies on | 563 // Order of destruction is important as AutofillManager relies on |
| 564 // PersonalDataManager to be around when it gets destroyed. | 564 // PersonalDataManager to be around when it gets destroyed. |
| 565 autofill_manager_ = NULL; | 565 autofill_manager_ = NULL; |
| 566 } | 566 } |
| 567 | 567 |
| 568 virtual void SetUp() OVERRIDE { | 568 virtual void SetUp() OVERRIDE { |
| 569 Profile* profile = new TestingProfile(); | 569 if (!browser_context_.get()) { |
| 570 browser_context_.reset(profile); | 570 Profile* profile = new TestingProfile(); |
| 571 PersonalDataManagerFactory::GetInstance()->SetTestingFactory( | 571 browser_context_.reset(profile); |
| 572 profile, TestPersonalDataManager::Build); | 572 PersonalDataManagerFactory::GetInstance()->SetTestingFactory( |
| 573 profile, TestPersonalDataManager::Build); | |
| 574 } | |
| 573 | 575 |
| 574 TabContentsWrapperTestHarness::SetUp(); | 576 TabContentsWrapperTestHarness::SetUp(); |
| 575 autofill_manager_ = new TestAutofillManager(contents_wrapper(), | 577 autofill_manager_ = new TestAutofillManager(contents_wrapper(), |
| 576 &personal_data_); | 578 &personal_data_); |
| 577 | 579 |
| 578 file_thread_.Start(); | 580 file_thread_.Start(); |
| 579 } | 581 } |
| 580 | 582 |
| 581 virtual void TearDown() OVERRIDE { | 583 virtual void TearDown() OVERRIDE { |
| 582 file_thread_.Stop(); | 584 file_thread_.Stop(); |
| 583 TabContentsWrapperTestHarness::TearDown(); | 585 TabContentsWrapperTestHarness::TearDown(); |
| 584 } | 586 } |
| 585 | 587 |
| 586 void UpdatePasswordSyncState(bool new_renderer) { | 588 void GoOffTheRecord() { |
| 587 autofill_manager_->UpdatePasswordSyncState(NULL, new_renderer); | 589 TearDown(); |
|
Ilya Sherman
2012/04/24 00:46:54
Hmm, I'm not sure this is safe. For example, chro
Garrett Casto
2012/04/24 18:49:56
I'm not sure how this is different from the normal
| |
| 590 other_browser_context_.reset(new TestingProfile()); | |
| 591 Profile* incognito = | |
| 592 Profile::FromBrowserContext( | |
| 593 other_browser_context_.get())->GetOffTheRecordProfile(); | |
| 594 browser_context_.reset(incognito); | |
| 595 SetUp(); | |
| 596 } | |
| 597 | |
| 598 void UpdatePasswordGenerationState(bool new_renderer) { | |
| 599 autofill_manager_->UpdatePasswordGenerationState(NULL, new_renderer); | |
| 588 } | 600 } |
| 589 | 601 |
| 590 void GetAutofillSuggestions(int query_id, | 602 void GetAutofillSuggestions(int query_id, |
| 591 const webkit::forms::FormData& form, | 603 const webkit::forms::FormData& form, |
| 592 const webkit::forms::FormField& field) { | 604 const webkit::forms::FormField& field) { |
| 593 autofill_manager_->OnQueryFormFieldAutofill(query_id, | 605 autofill_manager_->OnQueryFormFieldAutofill(query_id, |
| 594 form, | 606 form, |
| 595 field, | 607 field, |
| 596 gfx::Rect(), | 608 gfx::Rect(), |
| 597 false); | 609 false); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 677 return autofill_manager_->sync_service_; | 689 return autofill_manager_->sync_service_; |
| 678 } | 690 } |
| 679 | 691 |
| 680 protected: | 692 protected: |
| 681 content::TestBrowserThread ui_thread_; | 693 content::TestBrowserThread ui_thread_; |
| 682 content::TestBrowserThread file_thread_; | 694 content::TestBrowserThread file_thread_; |
| 683 | 695 |
| 684 scoped_refptr<TestAutofillManager> autofill_manager_; | 696 scoped_refptr<TestAutofillManager> autofill_manager_; |
| 685 TestPersonalDataManager personal_data_; | 697 TestPersonalDataManager personal_data_; |
| 686 | 698 |
| 699 // Used when we want an off the record profile. This will store the original | |
| 700 // profile from which the off the record profile is derived. | |
| 701 scoped_ptr<Profile> other_browser_context_; | |
| 702 | |
| 687 private: | 703 private: |
| 688 DISALLOW_COPY_AND_ASSIGN(AutofillManagerTest); | 704 DISALLOW_COPY_AND_ASSIGN(AutofillManagerTest); |
| 689 }; | 705 }; |
| 690 | 706 |
| 691 class TestFormStructure : public FormStructure { | 707 class TestFormStructure : public FormStructure { |
| 692 public: | 708 public: |
| 693 explicit TestFormStructure(const FormData& form) : FormStructure(form) {} | 709 explicit TestFormStructure(const FormData& form) : FormStructure(form) {} |
| 694 virtual ~TestFormStructure() {} | 710 virtual ~TestFormStructure() {} |
| 695 | 711 |
| 696 void SetFieldTypes(const std::vector<AutofillFieldType>& heuristic_types, | 712 void SetFieldTypes(const std::vector<AutofillFieldType>& heuristic_types, |
| (...skipping 2183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2880 autofill_test::CreateTestFormField("", "20", "901", "text", &field); | 2896 autofill_test::CreateTestFormField("", "20", "901", "text", &field); |
| 2881 types.clear(); | 2897 types.clear(); |
| 2882 types.insert(UNKNOWN_TYPE); | 2898 types.insert(UNKNOWN_TYPE); |
| 2883 form.fields.push_back(field); | 2899 form.fields.push_back(field); |
| 2884 expected_types.push_back(types); | 2900 expected_types.push_back(types); |
| 2885 | 2901 |
| 2886 autofill_manager_->set_expected_submitted_field_types(expected_types); | 2902 autofill_manager_->set_expected_submitted_field_types(expected_types); |
| 2887 FormSubmitted(form); | 2903 FormSubmitted(form); |
| 2888 } | 2904 } |
| 2889 | 2905 |
| 2890 TEST_F(AutofillManagerTest, UpdatePasswordSyncState) { | 2906 TEST_F(AutofillManagerTest, UpdatePasswordGenerationState) { |
| 2891 // Allow this test to control what should get synced. | 2907 // Allow this test to control what should get synced. |
| 2892 profile()->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); | 2908 profile()->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); |
| 2893 | 2909 |
| 2894 // Sync some things, but not passwords. Shouldn't send anything since | 2910 // Sync some things, but not passwords. Shouldn't send anything since |
| 2895 // password generation is disabled by default. | 2911 // password generation is disabled by default. |
| 2896 ProfileSyncService* sync_service = GetProfileSyncService(); | 2912 ProfileSyncService* sync_service = GetProfileSyncService(); |
| 2897 sync_service->SetSyncSetupCompleted(); | 2913 sync_service->SetSyncSetupCompleted(); |
| 2898 syncable::ModelTypeSet preferred_set; | 2914 syncable::ModelTypeSet preferred_set; |
| 2899 preferred_set.Put(syncable::EXTENSIONS); | 2915 preferred_set.Put(syncable::EXTENSIONS); |
| 2900 preferred_set.Put(syncable::PREFERENCES); | 2916 preferred_set.Put(syncable::PREFERENCES); |
| 2901 sync_service->ChangePreferredDataTypes(preferred_set); | 2917 sync_service->ChangePreferredDataTypes(preferred_set); |
| 2902 syncable::ModelTypeSet new_set = sync_service->GetPreferredDataTypes(); | 2918 syncable::ModelTypeSet new_set = sync_service->GetPreferredDataTypes(); |
| 2903 UpdatePasswordSyncState(false); | 2919 UpdatePasswordGenerationState(false); |
| 2904 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); | 2920 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); |
| 2905 | 2921 |
| 2906 // Now sync passwords. | 2922 // Now sync passwords. |
| 2907 preferred_set.Put(syncable::PASSWORDS); | 2923 preferred_set.Put(syncable::PASSWORDS); |
| 2908 sync_service->ChangePreferredDataTypes(preferred_set); | 2924 sync_service->ChangePreferredDataTypes(preferred_set); |
| 2909 UpdatePasswordSyncState(false); | 2925 UpdatePasswordGenerationState(false); |
| 2910 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); | 2926 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); |
| 2911 EXPECT_TRUE(autofill_manager_->GetSentStates()[0]); | 2927 EXPECT_TRUE(autofill_manager_->GetSentStates()[0]); |
| 2912 autofill_manager_->ClearSentStates(); | 2928 autofill_manager_->ClearSentStates(); |
| 2913 | 2929 |
| 2914 // Add some additional synced state. Nothing should be sent. | 2930 // Add some additional synced state. Nothing should be sent. |
| 2915 preferred_set.Put(syncable::THEMES); | 2931 preferred_set.Put(syncable::THEMES); |
| 2916 sync_service->ChangePreferredDataTypes(preferred_set); | 2932 sync_service->ChangePreferredDataTypes(preferred_set); |
| 2917 UpdatePasswordSyncState(false); | 2933 UpdatePasswordGenerationState(false); |
| 2918 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); | 2934 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); |
| 2919 | 2935 |
| 2920 // Disable syncing. This should be sent. | 2936 // Disable autofill. This should be sent. |
|
Ilya Sherman
2012/04/24 00:46:54
Hmm, why is this case (disabling sync) removed fro
Garrett Casto
2012/04/24 18:49:56
Re-added. Just got lost in the shuffle.
| |
| 2921 sync_service->DisableForUser(); | 2937 autofill_manager_->set_autofill_enabled(false); |
| 2922 UpdatePasswordSyncState(false); | 2938 UpdatePasswordGenerationState(false); |
| 2923 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); | 2939 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); |
| 2924 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); | 2940 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); |
| 2925 autofill_manager_->ClearSentStates(); | 2941 autofill_manager_->ClearSentStates(); |
| 2926 | 2942 |
| 2943 // Now re-enable autofill, but disable password manager by going incognito. | |
| 2944 // This should still leave the feature disabled, and shouldn't send anything. | |
|
Ilya Sherman
2012/04/24 00:46:54
nit: The "still" in this comment seems a little bi
Garrett Casto
2012/04/24 18:49:56
N/A
| |
| 2945 GoOffTheRecord(); | |
| 2946 autofill_manager_->set_autofill_enabled(true); | |
| 2947 UpdatePasswordGenerationState(false); | |
| 2948 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); | |
| 2949 | |
| 2927 // When a new render_view is created, we send the state even if it's the | 2950 // When a new render_view is created, we send the state even if it's the |
| 2928 // same. | 2951 // same. |
| 2929 UpdatePasswordSyncState(true); | 2952 UpdatePasswordGenerationState(true); |
| 2930 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); | 2953 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); |
| 2931 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); | 2954 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); |
| 2932 autofill_manager_->ClearSentStates(); | 2955 autofill_manager_->ClearSentStates(); |
| 2933 } | 2956 } |
| 2934 | 2957 |
| 2935 namespace { | 2958 namespace { |
| 2936 | 2959 |
| 2937 class MockAutofillExternalDelegate : public TestAutofillExternalDelegate { | 2960 class MockAutofillExternalDelegate : public TestAutofillExternalDelegate { |
| 2938 public: | 2961 public: |
| 2939 explicit MockAutofillExternalDelegate(TabContentsWrapper* wrapper, | 2962 explicit MockAutofillExternalDelegate(TabContentsWrapper* wrapper, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2992 | 3015 |
| 2993 AutofillManager* autofill_manager = contents_wrapper()->autofill_manager(); | 3016 AutofillManager* autofill_manager = contents_wrapper()->autofill_manager(); |
| 2994 EXPECT_TRUE(autofill_manager->external_delegate()); | 3017 EXPECT_TRUE(autofill_manager->external_delegate()); |
| 2995 | 3018 |
| 2996 AutocompleteHistoryManager* autocomplete_history_manager = | 3019 AutocompleteHistoryManager* autocomplete_history_manager = |
| 2997 contents_wrapper()->autocomplete_history_manager(); | 3020 contents_wrapper()->autocomplete_history_manager(); |
| 2998 EXPECT_TRUE(autocomplete_history_manager->external_delegate()); | 3021 EXPECT_TRUE(autocomplete_history_manager->external_delegate()); |
| 2999 } | 3022 } |
| 3000 | 3023 |
| 3001 #endif // OS_ANDROID | 3024 #endif // OS_ANDROID |
| OLD | NEW |