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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
| 7 #include "base/prefs/pref_registry_simple.h" | 7 #include "base/prefs/pref_registry_simple.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/prefs/testing_pref_service.h" | 9 #include "base/prefs/testing_pref_service.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 695 form_manager.ProvisionallySave( | 695 form_manager.ProvisionallySave( |
| 696 complete_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); | 696 complete_form, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); |
| 697 // By now that form has been used once. | 697 // By now that form has been used once. |
| 698 complete_form.times_used = 1; | 698 complete_form.times_used = 1; |
| 699 | 699 |
| 700 // Check that PasswordStore receives an update request with the complete form. | 700 // Check that PasswordStore receives an update request with the complete form. |
| 701 EXPECT_CALL(*mock_store(), UpdateLogin(complete_form)); | 701 EXPECT_CALL(*mock_store(), UpdateLogin(complete_form)); |
| 702 form_manager.Save(); | 702 form_manager.Save(); |
| 703 } | 703 } |
| 704 | 704 |
| 705 TEST_F(PasswordFormManagerTest, TestScoringPublicSuffixMatch) { | |
| 706 base::MessageLoop message_loop; | |
| 707 | |
| 708 TestPasswordManagerClient client(NULL); | |
| 709 MockPasswordManagerDriver driver; | |
| 710 EXPECT_CALL(driver, IsOffTheRecord()).WillRepeatedly(Return(false)); | |
| 711 EXPECT_CALL(driver, AllowPasswordGenerationForForm(_)); | |
| 712 | |
| 713 TestPasswordManager password_manager(&client); | |
| 714 scoped_ptr<PasswordFormManager> manager(new PasswordFormManager( | |
| 715 &password_manager, &client, &driver, *observed_form(), false)); | |
| 716 | |
| 717 // Simulate having two matches for this form, first comes from different | |
| 718 // signon realm, but reports the same origin and action as matched form. | |
| 719 // Second candidate has the same signon realm as the form, but has a different | |
| 720 // origin and action. Public suffix match is the most important criterion so | |
| 721 // the second candidate should be selected. | |
| 722 std::vector<PasswordForm*> results; | |
| 723 results.push_back(CreateSavedMatch(false)); | |
| 724 results.push_back(CreateSavedMatch(false)); | |
| 725 results[0]->origin = GURL("http://accounts.google.com/a/ServiceLoginAuth2"); | |
|
Garrett Casto
2014/04/25 23:36:05
The order of these still doesn't match the descrip
| |
| 726 results[0]->action = GURL("http://accounts.google.com/a/ServiceLogin2"); | |
| 727 results[1]->original_signon_realm = "http://accounts2.google.com"; | |
| 728 SimulateFetchMatchingLoginsFromPasswordStore(manager.get()); | |
| 729 SimulateResponseFromPasswordStore(manager.get(), results); | |
| 730 EXPECT_EQ(1u, password_manager.GetLatestBestMatches().size()); | |
| 731 EXPECT_EQ("", password_manager.GetLatestBestMatches().begin() | |
| 732 ->second->original_signon_realm); | |
| 733 } | |
| 734 | |
| 705 } // namespace password_manager | 735 } // namespace password_manager |
| OLD | NEW |