Index: components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc |
diff --git a/components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc b/components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc |
index fc1c88679d996480c41a486ff6c1c3b0ffcf1f5d..d98ee9040ed4e35284e77e855bcd9709ed679c27 100644 |
--- a/components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc |
+++ b/components/password_manager/content/browser/content_credential_manager_dispatcher_unittest.cc |
@@ -130,4 +130,27 @@ TEST_F(ContentCredentialManagerDispatcherTest, |
process()->sink().ClearMessages(); |
} |
+TEST_F(ContentCredentialManagerDispatcherTest, |
+ CredentialManagerOnRequestCredentialWhileRequestPending) { |
+ std::vector<GURL> federations; |
+ dispatcher()->OnRequestCredential(kRequestId, false, federations); |
+ dispatcher()->OnRequestCredential(kRequestId, false, federations); |
+ |
+ // Check that the second request triggered a rejection. |
+ uint32 kMsgID = CredentialManagerMsg_RejectCredentialRequest::ID; |
+ const IPC::Message* message = |
+ process()->sink().GetFirstMessageMatching(kMsgID); |
+ EXPECT_TRUE(message); |
+ process()->sink().ClearMessages(); |
+ |
+ // Execute the PasswordStore asynchronousness. |
+ RunAllPendingTasks(); |
+ |
+ // Check that the first request resolves. |
+ kMsgID = CredentialManagerMsg_SendCredential::ID; |
+ message = process()->sink().GetFirstMessageMatching(kMsgID); |
+ EXPECT_TRUE(message); |
+ process()->sink().ClearMessages(); |
+} |
+ |
} // namespace password_manager |