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

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

Issue 10222017: Make password generation switched by a preference in chrome settings rather than a command line fla… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 | Annotate | Revision Log
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 <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
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(
Garrett Casto 2012/04/26 23:23:59 Remove this.
492 content::RenderViewHost* host, bool enabled) OVERRIDE {
493 sent_sync_states_.push_back(enabled);
494 }
495
491 virtual void SendPasswordGenerationStateToRenderer( 496 virtual void SendPasswordGenerationStateToRenderer(
492 content::RenderViewHost* host, bool enabled) OVERRIDE { 497 content::RenderViewHost* host, bool enabled) OVERRIDE {
493 sent_states_.push_back(enabled); 498 sent_enabled_states_.push_back(enabled);
494 } 499 }
495 500
496 const std::vector<bool>& GetSentStates() { 501 const std::vector<bool>& GetSentSyncStates() {
497 return sent_states_; 502 return sent_sync_states_;
498 } 503 }
499 504
500 void ClearSentStates() { 505 const std::vector<bool>& GetSentEnabledStates() {
501 sent_states_.clear(); 506 return sent_enabled_states_;
507 }
508
509 void ClearSentSyncStates() {
510 sent_sync_states_.clear();
511 }
512
513 void ClearSentEnabledStates() {
514 sent_enabled_states_.clear();
502 } 515 }
503 516
504 const std::string GetSubmittedFormSignature() { 517 const std::string GetSubmittedFormSignature() {
505 return submitted_form_signature_; 518 return submitted_form_signature_;
506 } 519 }
507 520
508 AutofillProfile* GetProfileWithGUID(const char* guid) { 521 AutofillProfile* GetProfileWithGUID(const char* guid) {
509 return personal_data_->GetProfileWithGUID(guid); 522 return personal_data_->GetProfileWithGUID(guid);
510 } 523 }
511 524
(...skipping 23 matching lines...) Expand all
535 // Weak reference. 548 // Weak reference.
536 TestPersonalDataManager* personal_data_; 549 TestPersonalDataManager* personal_data_;
537 550
538 bool autofill_enabled_; 551 bool autofill_enabled_;
539 552
540 bool did_finish_async_form_submit_; 553 bool did_finish_async_form_submit_;
541 bool message_loop_is_running_; 554 bool message_loop_is_running_;
542 555
543 std::string submitted_form_signature_; 556 std::string submitted_form_signature_;
544 std::vector<FieldTypeSet> expected_submitted_field_types_; 557 std::vector<FieldTypeSet> expected_submitted_field_types_;
545 std::vector<bool> sent_states_; 558 std::vector<bool> sent_sync_states_;
559 std::vector<bool> sent_enabled_states_;
546 560
547 DISALLOW_COPY_AND_ASSIGN(TestAutofillManager); 561 DISALLOW_COPY_AND_ASSIGN(TestAutofillManager);
548 }; 562 };
549 563
550 } // namespace 564 } // namespace
551 565
552 class AutofillManagerTest : public TabContentsWrapperTestHarness { 566 class AutofillManagerTest : public TabContentsWrapperTestHarness {
553 public: 567 public:
554 typedef AutofillManager::GUIDPair GUIDPair; 568 typedef AutofillManager::GUIDPair GUIDPair;
555 569
(...skipping 20 matching lines...) Expand all
576 &personal_data_); 590 &personal_data_);
577 591
578 file_thread_.Start(); 592 file_thread_.Start();
579 } 593 }
580 594
581 virtual void TearDown() OVERRIDE { 595 virtual void TearDown() OVERRIDE {
582 file_thread_.Stop(); 596 file_thread_.Stop();
583 TabContentsWrapperTestHarness::TearDown(); 597 TabContentsWrapperTestHarness::TearDown();
584 } 598 }
585 599
600 void UpdatePasswordSyncState(bool new_renderer) {
601 autofill_manager_->UpdatePasswordSyncState(NULL, new_renderer);
602 }
603
586 void UpdatePasswordGenerationState(bool new_renderer) { 604 void UpdatePasswordGenerationState(bool new_renderer) {
587 autofill_manager_->UpdatePasswordGenerationState(NULL, new_renderer); 605 autofill_manager_->UpdatePasswordGenerationState(NULL, new_renderer);
588 } 606 }
589 607
590 void GetAutofillSuggestions(int query_id, 608 void GetAutofillSuggestions(int query_id,
591 const webkit::forms::FormData& form, 609 const webkit::forms::FormData& form,
592 const webkit::forms::FormField& field) { 610 const webkit::forms::FormField& field) {
593 autofill_manager_->OnQueryFormFieldAutofill(query_id, 611 autofill_manager_->OnQueryFormFieldAutofill(query_id,
594 form, 612 form,
595 field, 613 field,
(...skipping 2288 matching lines...) Expand 10 before | Expand all | Expand 10 after
2884 autofill_test::CreateTestFormField("", "20", "901", "text", &field); 2902 autofill_test::CreateTestFormField("", "20", "901", "text", &field);
2885 types.clear(); 2903 types.clear();
2886 types.insert(UNKNOWN_TYPE); 2904 types.insert(UNKNOWN_TYPE);
2887 form.fields.push_back(field); 2905 form.fields.push_back(field);
2888 expected_types.push_back(types); 2906 expected_types.push_back(types);
2889 2907
2890 autofill_manager_->set_expected_submitted_field_types(expected_types); 2908 autofill_manager_->set_expected_submitted_field_types(expected_types);
2891 FormSubmitted(form); 2909 FormSubmitted(form);
2892 } 2910 }
2893 2911
2894 TEST_F(AutofillManagerTest, UpdatePasswordGenerationState) { 2912 TEST_F(AutofillManagerTest, UpdatePasswordSyncState) {
2895 // Allow this test to control what should get synced. 2913 // Allow this test to control what should get synced.
2896 profile()->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 2914 profile()->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
2897 2915
2898 // Sync some things, but not passwords. Shouldn't send anything since 2916 // Sync some things, but not passwords. Shouldn't send anything since
2899 // password generation is disabled by default. 2917 // password generation is disabled by default.
2900 ProfileSyncService* sync_service = GetProfileSyncService(); 2918 ProfileSyncService* sync_service = GetProfileSyncService();
2901 sync_service->SetSyncSetupCompleted(); 2919 sync_service->SetSyncSetupCompleted();
2902 syncable::ModelTypeSet preferred_set; 2920 syncable::ModelTypeSet preferred_set;
2903 preferred_set.Put(syncable::EXTENSIONS); 2921 preferred_set.Put(syncable::EXTENSIONS);
2904 preferred_set.Put(syncable::PREFERENCES); 2922 preferred_set.Put(syncable::PREFERENCES);
2905 sync_service->ChangePreferredDataTypes(preferred_set); 2923 sync_service->ChangePreferredDataTypes(preferred_set);
2906 syncable::ModelTypeSet new_set = sync_service->GetPreferredDataTypes(); 2924 syncable::ModelTypeSet new_set = sync_service->GetPreferredDataTypes();
2907 UpdatePasswordGenerationState(false); 2925 UpdatePasswordSyncState(false);
2908 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); 2926 EXPECT_EQ(0u, autofill_manager_->GetSentSyncStates().size());
2909 2927
2910 // Now sync passwords. 2928 // Now sync passwords.
2911 preferred_set.Put(syncable::PASSWORDS); 2929 preferred_set.Put(syncable::PASSWORDS);
2912 sync_service->ChangePreferredDataTypes(preferred_set); 2930 sync_service->ChangePreferredDataTypes(preferred_set);
2913 UpdatePasswordGenerationState(false); 2931 UpdatePasswordSyncState(false);
2914 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); 2932 EXPECT_EQ(1u, autofill_manager_->GetSentSyncStates().size());
2915 EXPECT_TRUE(autofill_manager_->GetSentStates()[0]); 2933 EXPECT_TRUE(autofill_manager_->GetSentSyncStates()[0]);
2916 autofill_manager_->ClearSentStates(); 2934 autofill_manager_->ClearSentSyncStates();
2917 2935
2918 // Add some additional synced state. Nothing should be sent. 2936 // Add some additional synced state. Nothing should be sent.
2919 preferred_set.Put(syncable::THEMES); 2937 preferred_set.Put(syncable::THEMES);
2920 sync_service->ChangePreferredDataTypes(preferred_set); 2938 sync_service->ChangePreferredDataTypes(preferred_set);
2921 UpdatePasswordGenerationState(false); 2939 UpdatePasswordSyncState(false);
2922 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); 2940 EXPECT_EQ(0u, autofill_manager_->GetSentSyncStates().size());
2923 2941
2924 // Disable syncing. This should disable the feature. 2942 // Disable syncing. This should disable the feature.
2925 sync_service->DisableForUser(); 2943 sync_service->DisableForUser();
2926 UpdatePasswordGenerationState(false); 2944 UpdatePasswordSyncState(false);
2927 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); 2945 EXPECT_EQ(1u, autofill_manager_->GetSentSyncStates().size());
2928 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); 2946 EXPECT_FALSE(autofill_manager_->GetSentSyncStates()[0]);
2929 autofill_manager_->ClearSentStates(); 2947 autofill_manager_->ClearSentSyncStates();
2930 2948
2931 // Disable password manager by going incognito, and re-enable syncing. The 2949 // Disable password manager by going incognito, and re-enable syncing. The
2932 // feature should still be disabled, and nothing will be sent. 2950 // feature should still be disabled, and nothing will be sent.
2933 sync_service->SetSyncSetupCompleted(); 2951 sync_service->SetSyncSetupCompleted();
2934 profile()->set_incognito(true); 2952 profile()->set_incognito(true);
2953 UpdatePasswordSyncState(false);
2954 EXPECT_EQ(0u, autofill_manager_->GetSentSyncStates().size());
2955
2956 // When a new render_view is created, we send the state even if it's the
2957 // same.
2958 UpdatePasswordSyncState(true);
2959 EXPECT_EQ(1u, autofill_manager_->GetSentSyncStates().size());
2960 EXPECT_FALSE(autofill_manager_->GetSentSyncStates()[0]);
2961 autofill_manager_->ClearSentSyncStates();
2962 }
2963
2964 TEST_F(AutofillManagerTest, UpdatePasswordGenerationState) {
2965 // Enabled state remains false, should not sent.
2966 profile()->GetPrefs()->SetBoolean(prefs::kPasswordGenerationEnabled, false);
2935 UpdatePasswordGenerationState(false); 2967 UpdatePasswordGenerationState(false);
2936 EXPECT_EQ(0u, autofill_manager_->GetSentStates().size()); 2968 EXPECT_EQ(0u, autofill_manager_->GetSentEnabledStates().size());
2969
2970 // Enabled state from false to true, should sent true.
2971 profile()->GetPrefs()->SetBoolean(prefs::kPasswordGenerationEnabled, true);
2972 UpdatePasswordGenerationState(false);
2973 EXPECT_EQ(1u, autofill_manager_->GetSentEnabledStates().size());
2974 EXPECT_TRUE(autofill_manager_->GetSentEnabledStates()[0]);
2975 autofill_manager_->ClearSentEnabledStates();
2976
2977 // Enabled states remains true, should not sent.
2978 profile()->GetPrefs()->SetBoolean(prefs::kPasswordGenerationEnabled, true);
2979 UpdatePasswordGenerationState(false);
2980 EXPECT_EQ(0u, autofill_manager_->GetSentEnabledStates().size());
2981
2982 // Enabled states from true to false, should sent false.
2983 profile()->GetPrefs()->SetBoolean(prefs::kPasswordGenerationEnabled, false);
2984 UpdatePasswordGenerationState(false);
2985 EXPECT_EQ(1u, autofill_manager_->GetSentEnabledStates().size());
2986 EXPECT_FALSE(autofill_manager_->GetSentEnabledStates()[0]);
2987 autofill_manager_->ClearSentEnabledStates();
2937 2988
2938 // When a new render_view is created, we send the state even if it's the 2989 // When a new render_view is created, we send the state even if it's the
2939 // same. 2990 // same.
2940 UpdatePasswordGenerationState(true); 2991 UpdatePasswordGenerationState(true);
2941 EXPECT_EQ(1u, autofill_manager_->GetSentStates().size()); 2992 EXPECT_EQ(1u, autofill_manager_->GetSentEnabledStates().size());
2942 EXPECT_FALSE(autofill_manager_->GetSentStates()[0]); 2993 EXPECT_FALSE(autofill_manager_->GetSentEnabledStates()[0]);
2943 autofill_manager_->ClearSentStates(); 2994 autofill_manager_->ClearSentEnabledStates();
2944 } 2995 }
2945
2946 namespace { 2996 namespace {
2947 2997
2948 class MockAutofillExternalDelegate : public TestAutofillExternalDelegate { 2998 class MockAutofillExternalDelegate : public TestAutofillExternalDelegate {
2949 public: 2999 public:
2950 explicit MockAutofillExternalDelegate(TabContentsWrapper* wrapper, 3000 explicit MockAutofillExternalDelegate(TabContentsWrapper* wrapper,
2951 AutofillManager* autofill_manager) 3001 AutofillManager* autofill_manager)
2952 : TestAutofillExternalDelegate(wrapper, autofill_manager) {} 3002 : TestAutofillExternalDelegate(wrapper, autofill_manager) {}
2953 virtual ~MockAutofillExternalDelegate() {} 3003 virtual ~MockAutofillExternalDelegate() {}
2954 3004
2955 MOCK_METHOD5(OnQuery, void(int query_id, 3005 MOCK_METHOD5(OnQuery, void(int query_id,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
3003 3053
3004 AutofillManager* autofill_manager = contents_wrapper()->autofill_manager(); 3054 AutofillManager* autofill_manager = contents_wrapper()->autofill_manager();
3005 EXPECT_TRUE(autofill_manager->external_delegate()); 3055 EXPECT_TRUE(autofill_manager->external_delegate());
3006 3056
3007 AutocompleteHistoryManager* autocomplete_history_manager = 3057 AutocompleteHistoryManager* autocomplete_history_manager =
3008 contents_wrapper()->autocomplete_history_manager(); 3058 contents_wrapper()->autocomplete_history_manager();
3009 EXPECT_TRUE(autocomplete_history_manager->external_delegate()); 3059 EXPECT_TRUE(autocomplete_history_manager->external_delegate());
3010 } 3060 }
3011 3061
3012 #endif // OS_ANDROID 3062 #endif // OS_ANDROID
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698