Index: components/password_manager/content/browser/credential_manager_dispatcher_unittest.cc |
diff --git a/components/password_manager/content/browser/credential_manager_dispatcher_unittest.cc b/components/password_manager/content/browser/credential_manager_dispatcher_unittest.cc |
index 0c4c6dc84250f419a8ed1cc307446ae0388670c5..46bbccc3090306b4f9d1ed3001b9089f6487cd04 100644 |
--- a/components/password_manager/content/browser/credential_manager_dispatcher_unittest.cc |
+++ b/components/password_manager/content/browser/credential_manager_dispatcher_unittest.cc |
@@ -167,13 +167,15 @@ class CredentialManagerDispatcherTest |
form_.origin = web_contents()->GetLastCommittedURL().GetOrigin(); |
form_.signon_realm = form_.origin.spec(); |
form_.scheme = autofill::PasswordForm::SCHEME_HTML; |
+ form_.skip_zero_click = false; |
form2_.username_value = base::ASCIIToUTF16("Username 2"); |
form2_.display_name = base::ASCIIToUTF16("Display Name 2"); |
form2_.password_value = base::ASCIIToUTF16("Password 2"); |
form2_.origin = web_contents()->GetLastCommittedURL().GetOrigin(); |
- form2_.signon_realm = form_.origin.spec(); |
+ form2_.signon_realm = form2_.origin.spec(); |
form2_.scheme = autofill::PasswordForm::SCHEME_HTML; |
+ form2_.skip_zero_click = false; |
cross_origin_form_.username_value = base::ASCIIToUTF16("Username"); |
cross_origin_form_.display_name = base::ASCIIToUTF16("Display Name"); |
@@ -181,6 +183,7 @@ class CredentialManagerDispatcherTest |
cross_origin_form_.origin = GURL("https://example.net/"); |
cross_origin_form_.signon_realm = cross_origin_form_.origin.spec(); |
cross_origin_form_.scheme = autofill::PasswordForm::SCHEME_HTML; |
+ cross_origin_form_.skip_zero_click = false; |
store_->Clear(); |
EXPECT_TRUE(store_->IsEmpty()); |
@@ -404,6 +407,57 @@ TEST_F(CredentialManagerDispatcherTest, |
} |
TEST_F(CredentialManagerDispatcherTest, |
+ OnRequestCredentialWithZeroClickOnlyOnePasswordStore) { |
+ form_.skip_zero_click = true; |
+ store_->AddLogin(form_); |
+ store_->AddLogin(form2_); |
+ |
+ std::vector<GURL> federations; |
+ dispatcher()->OnRequestCredential(kRequestId, true, federations); |
+ |
+ RunAllPendingTasks(); |
+ |
+ const uint32 kMsgID = CredentialManagerMsg_SendCredential::ID; |
+ const IPC::Message* message = |
+ process()->sink().GetFirstMessageMatching(kMsgID); |
+ EXPECT_TRUE(message); |
+ EXPECT_FALSE(client_->did_prompt_user_to_choose()); |
+ CredentialManagerMsg_SendCredential::Param send_param; |
+ CredentialManagerMsg_SendCredential::Read(message, &send_param); |
+ |
+ // We should get |form2_| back, as |form_| is marked as skipping zero-click. |
+ EXPECT_EQ(CredentialType::CREDENTIAL_TYPE_LOCAL, get<1>(send_param).type); |
+ EXPECT_EQ(form2_.username_value, get<1>(send_param).id); |
+ EXPECT_EQ(form2_.display_name, get<1>(send_param).name); |
+ EXPECT_EQ(form2_.password_value, get<1>(send_param).password); |
+} |
+ |
+TEST_F(CredentialManagerDispatcherTest, |
+ OnRequestCredentialWithZeroClickOnlyCrossOriginPasswordStore) { |
+ store_->AddLogin(cross_origin_form_); |
+ |
+ form_.skip_zero_click = true; |
+ store_->AddLogin(form_); |
+ |
+ std::vector<GURL> federations; |
+ dispatcher()->OnRequestCredential(kRequestId, true, federations); |
+ |
+ RunAllPendingTasks(); |
+ |
+ const uint32 kMsgID = CredentialManagerMsg_SendCredential::ID; |
+ const IPC::Message* message = |
+ process()->sink().GetFirstMessageMatching(kMsgID); |
+ EXPECT_TRUE(message); |
+ EXPECT_FALSE(client_->did_prompt_user_to_choose()); |
+ CredentialManagerMsg_SendCredential::Param send_param; |
+ CredentialManagerMsg_SendCredential::Read(message, &send_param); |
+ |
+ // We only have cross-origin zero-click credentials; they should not be |
+ // returned. |
+ EXPECT_EQ(CredentialType::CREDENTIAL_TYPE_EMPTY, get<1>(send_param).type); |
+} |
+ |
+TEST_F(CredentialManagerDispatcherTest, |
CredentialManagerOnRequestCredentialWhileRequestPending) { |
client_->set_zero_click_enabled(false); |
store_->AddLogin(form_); |