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 // Unit test for VideoCaptureController. | 5 // Unit test for VideoCaptureController. |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 buffer, | 405 buffer, |
406 media::VideoCaptureFormat(capture_resolution, | 406 media::VideoCaptureFormat(capture_resolution, |
407 device_format.frame_rate, | 407 device_format.frame_rate, |
408 media::PIXEL_FORMAT_I420), | 408 media::PIXEL_FORMAT_I420), |
409 WrapI420Buffer(buffer, capture_resolution), | 409 WrapI420Buffer(buffer, capture_resolution), |
410 base::TimeTicks()); | 410 base::TimeTicks()); |
411 buffer = NULL; | 411 buffer = NULL; |
412 } | 412 } |
413 // ReserveOutputBuffer ought to fail now, because the pool is depleted. | 413 // ReserveOutputBuffer ought to fail now, because the pool is depleted. |
414 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::I420, | 414 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::I420, |
415 capture_resolution)); | 415 capture_resolution).get()); |
416 | 416 |
417 // The new client needs to be told of 3 buffers; the old clients only 2. | 417 // The new client needs to be told of 3 buffers; the old clients only 2. |
418 EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2)).Times(kPoolSize); | 418 EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2)).Times(kPoolSize); |
419 EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2)).Times(kPoolSize); | 419 EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2)).Times(kPoolSize); |
420 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)) | 420 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)) |
421 .Times(kPoolSize - 1); | 421 .Times(kPoolSize - 1); |
422 EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_1)).Times(kPoolSize); | 422 EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_1)).Times(kPoolSize); |
423 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2)) | 423 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2)) |
424 .Times(kPoolSize - 1); | 424 .Times(kPoolSize - 1); |
425 EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_2)).Times(kPoolSize); | 425 EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_2)).Times(kPoolSize); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 make_scoped_ptr(new gpu::MailboxHolder( | 518 make_scoped_ptr(new gpu::MailboxHolder( |
519 gpu::Mailbox(), 0, mailbox_syncpoints[i])), | 519 gpu::Mailbox(), 0, mailbox_syncpoints[i])), |
520 base::Bind(&CacheSyncPoint, &release_syncpoints[i]), | 520 base::Bind(&CacheSyncPoint, &release_syncpoints[i]), |
521 capture_resolution), | 521 capture_resolution), |
522 base::TimeTicks()); | 522 base::TimeTicks()); |
523 buffer = NULL; | 523 buffer = NULL; |
524 } | 524 } |
525 // ReserveOutputBuffers ought to fail now regardless of buffer format, because | 525 // ReserveOutputBuffers ought to fail now regardless of buffer format, because |
526 // the pool is depleted. | 526 // the pool is depleted. |
527 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::I420, | 527 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::I420, |
528 capture_resolution)); | 528 capture_resolution).get()); |
529 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::NATIVE_TEXTURE, | 529 ASSERT_FALSE(device_->ReserveOutputBuffer(media::VideoFrame::NATIVE_TEXTURE, |
530 gfx::Size(0, 0))); | 530 gfx::Size(0, 0)).get()); |
531 EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2)).Times(shm_buffers); | 531 EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2)).Times(shm_buffers); |
532 EXPECT_CALL(*client_b_, DoMailboxBufferReady(client_b_route_2)) | 532 EXPECT_CALL(*client_b_, DoMailboxBufferReady(client_b_route_2)) |
533 .Times(mailbox_buffers); | 533 .Times(mailbox_buffers); |
534 base::RunLoop().RunUntilIdle(); | 534 base::RunLoop().RunUntilIdle(); |
535 for (size_t i = 0; i < mailbox_syncpoints.size(); ++i) { | 535 for (size_t i = 0; i < mailbox_syncpoints.size(); ++i) { |
536 // A new release sync point must be inserted when the video frame is | 536 // A new release sync point must be inserted when the video frame is |
537 // returned to the Browser process. | 537 // returned to the Browser process. |
538 // See: MockVideoCaptureControllerEventHandler::OnMailboxBufferReady() and | 538 // See: MockVideoCaptureControllerEventHandler::OnMailboxBufferReady() and |
539 // VideoCaptureController::ReturnBuffer() | 539 // VideoCaptureController::ReturnBuffer() |
540 ASSERT_NE(mailbox_syncpoints[i], release_syncpoints[i]); | 540 ASSERT_NE(mailbox_syncpoints[i], release_syncpoints[i]); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 | 635 |
636 // Second client connects after the error state. It also should get told of | 636 // Second client connects after the error state. It also should get told of |
637 // the error. | 637 // the error. |
638 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1); | 638 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1); |
639 controller_->AddClient( | 639 controller_->AddClient( |
640 route_id, client_b_.get(), base::kNullProcessHandle, 200, session_200); | 640 route_id, client_b_.get(), base::kNullProcessHandle, 200, session_200); |
641 Mock::VerifyAndClearExpectations(client_b_.get()); | 641 Mock::VerifyAndClearExpectations(client_b_.get()); |
642 } | 642 } |
643 | 643 |
644 } // namespace content | 644 } // namespace content |
OLD | NEW |