diff options
author | jiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-19 04:11:44 +0000 |
---|---|---|
committer | jiayl@chromium.org <jiayl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-19 04:11:44 +0000 |
commit | e294d9d901e435650da66df9daa8d8436123efcc (patch) | |
tree | 15c3509db80024f45bbb5fad381825a81e882922 /content/renderer/media/webrtc_identity_service_unittest.cc | |
parent | dcd8ddc94307a631e7a6aa19b19b788216c55839 (diff) | |
download | chromium_src-e294d9d901e435650da66df9daa8d8436123efcc.zip chromium_src-e294d9d901e435650da66df9daa8d8436123efcc.tar.gz chromium_src-e294d9d901e435650da66df9daa8d8436123efcc.tar.bz2 |
WebRTCIdentityService should verify if the request still exists for a response from the browser.
Because if WebRTCIdentityService cancelled the request, the browser may have sent the response before it receive the "cancel".
So the request sequence number is now added to the IPCs so WebRTCIdentityService can verify if the sequence number matches its expectation.
BUG=320313
Review URL: https://codereview.chromium.org/62803009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235910 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media/webrtc_identity_service_unittest.cc')
-rw-r--r-- | content/renderer/media/webrtc_identity_service_unittest.cc | 66 |
1 files changed, 42 insertions, 24 deletions
diff --git a/content/renderer/media/webrtc_identity_service_unittest.cc b/content/renderer/media/webrtc_identity_service_unittest.cc index d6bd169..856865d 100644 --- a/content/renderer/media/webrtc_identity_service_unittest.cc +++ b/content/renderer/media/webrtc_identity_service_unittest.cc @@ -88,19 +88,19 @@ TEST_F(WebRTCIdentityServiceTest, TestSendRequest) { } TEST_F(WebRTCIdentityServiceTest, TestSuccessCallback) { - RequestIdentity(); + int id = RequestIdentity(); - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); } TEST_F(WebRTCIdentityServiceTest, TestFailureCallback) { - RequestIdentity(); + int id = RequestIdentity(); service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); + WebRTCIdentityHostMsg_RequestFailed(id, FAKE_ERROR)); EXPECT_EQ(FAKE_ERROR, last_error_); } @@ -115,26 +115,26 @@ TEST_F(WebRTCIdentityServiceTest, TestCancelRequest) { } TEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterSuccess) { - RequestIdentity(); + int id = RequestIdentity(); RequestIdentity(); EXPECT_EQ(1, service_->GetNumberOfMessages()); service_->ClearMessages(); - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); IPC::Message ipc = service_->GetLastMessage(); EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); } TEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterFailure) { - RequestIdentity(); + int id = RequestIdentity(); RequestIdentity(); EXPECT_EQ(1, service_->GetNumberOfMessages()); service_->ClearMessages(); service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); + WebRTCIdentityHostMsg_RequestFailed(id, FAKE_ERROR)); IPC::Message ipc = service_->GetLastMessage(); EXPECT_EQ(ipc.type(), WebRTCIdentityMsg_RequestIdentity::ID); @@ -157,7 +157,7 @@ TEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSentAfterCancelOutstanding) { } TEST_F(WebRTCIdentityServiceTest, TestCancelQueuedRequest) { - RequestIdentity(); + int sent_id = RequestIdentity(); int queued_request_id = RequestIdentity(); EXPECT_EQ(1, service_->GetNumberOfMessages()); service_->ClearMessages(); @@ -166,45 +166,63 @@ TEST_F(WebRTCIdentityServiceTest, TestCancelQueuedRequest) { // Verifies that the queued request is not sent after the outstanding request // returns. - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + sent_id, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); EXPECT_EQ(0, service_->GetNumberOfMessages()); } TEST_F(WebRTCIdentityServiceTest, TestQueuedRequestSuccessCallback) { - RequestIdentity(); - RequestIdentity(); + int id1 = RequestIdentity(); + int id2 = RequestIdentity(); // Completes the outstanding request. - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id1, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); ResetRequestResult(); - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id2, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); } TEST_F(WebRTCIdentityServiceTest, TestQueuedRequestFailureCallback) { - RequestIdentity(); - RequestIdentity(); + int id1 = RequestIdentity(); + int id2 = RequestIdentity(); // Completes the outstanding request. - service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_IdentityReady(FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id1, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); EXPECT_EQ(FAKE_CERTIFICATE, last_certificate_); EXPECT_EQ(FAKE_PRIVATE_KEY, last_private_key_); ResetRequestResult(); service_->OnControlMessageReceived( - WebRTCIdentityHostMsg_RequestFailed(FAKE_ERROR)); + WebRTCIdentityHostMsg_RequestFailed(id2, FAKE_ERROR)); EXPECT_EQ(FAKE_ERROR, last_error_); } +// Verifies that receiving a response for a cancelled request does not incur the +// callbacks. +TEST_F(WebRTCIdentityServiceTest, TestRequestCompletedAfterCancelled) { + int id1 = RequestIdentity(); + RequestIdentity(); + service_->CancelRequest(id1); + + service_->OnControlMessageReceived(WebRTCIdentityHostMsg_IdentityReady( + id1, FAKE_CERTIFICATE, FAKE_PRIVATE_KEY)); + + EXPECT_NE(FAKE_CERTIFICATE, last_certificate_); + EXPECT_NE(FAKE_PRIVATE_KEY, last_private_key_); + + service_->OnControlMessageReceived( + WebRTCIdentityHostMsg_RequestFailed(id1, FAKE_ERROR)); + EXPECT_NE(FAKE_ERROR, last_error_); +} + } // namespace content |