Index: components/password_manager/content/browser/credential_manager_impl_unittest.cc |
diff --git a/components/password_manager/content/browser/credential_manager_impl_unittest.cc b/components/password_manager/content/browser/credential_manager_impl_unittest.cc |
index f6c0ee62921fa38eac6cdd476179ee7da71e4b4f..6b0649a21216c715992b18d3685a89a68367efe1 100644 |
--- a/components/password_manager/content/browser/credential_manager_impl_unittest.cc |
+++ b/components/password_manager/content/browser/credential_manager_impl_unittest.cc |
@@ -40,6 +40,8 @@ using content::BrowserContext; |
using content::WebContents; |
using testing::_; |
+using testing::Pointee; |
+using testing::UnorderedElementsAre; |
namespace password_manager { |
@@ -97,7 +99,7 @@ class MockPasswordManagerClient : public StubPasswordManagerClient { |
ScopedVector<autofill::PasswordForm> local_forms, |
ScopedVector<autofill::PasswordForm> federated_forms, |
const GURL& origin, |
- const CredentialsCallback& callback) { |
+ const CredentialsCallback& callback) override { |
EXPECT_FALSE(local_forms.empty() && federated_forms.empty()); |
const autofill::PasswordForm* form = |
local_forms.empty() ? federated_forms[0] : local_forms[0]; |
@@ -695,11 +697,14 @@ TEST_F(CredentialManagerImplTest, |
} |
TEST_F(CredentialManagerImplTest, |
- CredentialManagerOnRequestCredentialWithEmptyAndNonUsernames) { |
+ CredentialManagerOnRequestCredentialWithEmptyAndNonemptyUsernames) { |
store_->AddLogin(form_); |
autofill::PasswordForm empty = form_; |
empty.username_value.clear(); |
store_->AddLogin(empty); |
+ autofill::PasswordForm duplicate = form_; |
+ duplicate.username_element = base::ASCIIToUTF16("username_element"); |
vabr (Chromium)
2016/08/24 15:56:17
nit: If this is meant to be different from form_.u
vasilii
2016/08/24 16:51:15
Done.
|
+ store_->AddLogin(duplicate); |
std::vector<GURL> federations; |
ExpectZeroClickSignInSuccess(false, true, federations, |
@@ -707,6 +712,41 @@ TEST_F(CredentialManagerImplTest, |
} |
TEST_F(CredentialManagerImplTest, |
+ CredentialManagerOnRequestCredentialWithDuplicates) { |
+ // Add 5 credentials. Two pairs of duplicates and one empty username. There |
+ // should be just two in the account chooser. |
+ store_->AddLogin(form_); |
+ autofill::PasswordForm empty = form_; |
+ empty.username_value.clear(); |
+ store_->AddLogin(empty); |
+ autofill::PasswordForm duplicate = form_; |
+ duplicate.username_element = base::ASCIIToUTF16("username_element"); |
+ duplicate.is_public_suffix_match = true; |
+ store_->AddLogin(duplicate); |
+ |
+ store_->AddLogin(origin_path_form_); |
+ duplicate = origin_path_form_; |
+ duplicate.username_element = base::ASCIIToUTF16("username_element"); |
+ duplicate.is_public_suffix_match = true; |
+ store_->AddLogin(duplicate); |
+ |
+ EXPECT_CALL(*client_, PromptUserToChooseCredentialsPtr( |
+ UnorderedElementsAre(Pointee(form_), |
+ Pointee(origin_path_form_)), |
+ testing::IsEmpty(), _, _)) |
+ .Times(testing::Exactly(1)); |
vabr (Chromium)
2016/08/24 15:56:17
optional: This line is not necessary (omitting is
vasilii
2016/08/24 16:51:15
It was copy-paste.
|
+ |
+ bool called = false; |
+ mojom::CredentialManagerError error; |
+ base::Optional<CredentialInfo> credential; |
+ std::vector<GURL> federations; |
+ CallGet(false, true, federations, |
+ base::Bind(&GetCredentialCallback, &called, &error, &credential)); |
+ |
+ RunAllPendingTasks(); |
+} |
+ |
+TEST_F(CredentialManagerImplTest, |
CredentialManagerOnRequestCredentialWithCrossOriginPasswordStore) { |
store_->AddLogin(cross_origin_form_); |