Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: content/browser/renderer_host/media/video_capture_controller_unittest.cc

Issue 68503005: Reorganize media::VideoCapture* types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: a7375761 Rebase. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 private: 108 private:
109 DISALLOW_COPY_AND_ASSIGN(VideoCaptureControllerTest); 109 DISALLOW_COPY_AND_ASSIGN(VideoCaptureControllerTest);
110 }; 110 };
111 111
112 // A simple test of VideoCaptureController's ability to add, remove, and keep 112 // A simple test of VideoCaptureController's ability to add, remove, and keep
113 // track of clients. 113 // track of clients.
114 TEST_F(VideoCaptureControllerTest, AddAndRemoveClients) { 114 TEST_F(VideoCaptureControllerTest, AddAndRemoveClients) {
115 media::VideoCaptureParams session_100; 115 media::VideoCaptureParams session_100;
116 session_100.session_id = 100; 116 session_100.session_id = 100;
117 session_100.requested_format = media::VideoCaptureFormat( 117 session_100.requested_format = media::VideoCaptureFormat(
118 320, 240, 30, media::ConstantResolutionVideoCaptureDevice); 118 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
119
120 media::VideoCaptureParams session_200 = session_100; 119 media::VideoCaptureParams session_200 = session_100;
121 session_200.session_id = 200; 120 session_200.session_id = 200;
122 121
123 media::VideoCaptureParams session_300 = session_100; 122 media::VideoCaptureParams session_300 = session_100;
124 session_300.session_id = 300; 123 session_300.session_id = 300;
125 124
126 media::VideoCaptureParams session_400 = session_100; 125 media::VideoCaptureParams session_400 = session_100;
127 session_400.session_id = 400; 126 session_400.session_id = 400;
128 127
129 // Intentionally use the same route ID for two of the clients: the device_ids 128 // Intentionally use the same route ID for two of the clients: the device_ids
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 << "Client count should return to zero after all clients are gone."; 201 << "Client count should return to zero after all clients are gone.";
203 } 202 }
204 203
205 // This test will connect and disconnect several clients while simulating an 204 // This test will connect and disconnect several clients while simulating an
206 // active capture device being started and generating frames. It runs on one 205 // active capture device being started and generating frames. It runs on one
207 // thread and is intended to behave deterministically. 206 // thread and is intended to behave deterministically.
208 TEST_F(VideoCaptureControllerTest, NormalCaptureMultipleClients) { 207 TEST_F(VideoCaptureControllerTest, NormalCaptureMultipleClients) {
209 media::VideoCaptureParams session_100; 208 media::VideoCaptureParams session_100;
210 session_100.session_id = 100; 209 session_100.session_id = 100;
211 session_100.requested_format = media::VideoCaptureFormat( 210 session_100.requested_format = media::VideoCaptureFormat(
212 320, 240, 30, media::ConstantResolutionVideoCaptureDevice); 211 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
213 212
214 media::VideoCaptureParams session_200 = session_100; 213 media::VideoCaptureParams session_200 = session_100;
215 session_200.session_id = 200; 214 session_200.session_id = 200;
216 215
217 media::VideoCaptureParams session_300 = session_100; 216 media::VideoCaptureParams session_300 = session_100;
218 session_300.session_id = 300; 217 session_300.session_id = 300;
219 218
220 media::VideoCaptureParams session_1 = session_100; 219 media::VideoCaptureParams session_1 = session_100;
221 session_1.session_id = 1; 220 session_1.session_id = 1;
222 221
223 gfx::Size capture_resolution(444, 200); 222 gfx::Size capture_resolution(444, 200);
224 223
225 // The device format needn't match the VideoCaptureParams (the camera can do 224 // The device format needn't match the VideoCaptureParams (the camera can do
226 // what it wants). Pick something random. 225 // what it wants). Pick something random.
227 media::VideoCaptureCapability device_format( 226 media::VideoCaptureFormat device_format(
228 10, 10, 25, media::PIXEL_FORMAT_RGB24, 227 gfx::Size(10, 10), 25, media::PIXEL_FORMAT_RGB24);
229 media::ConstantResolutionVideoCaptureDevice);
230 228
231 const VideoCaptureControllerID client_a_route_1(0xa1a1a1a1); 229 const VideoCaptureControllerID client_a_route_1(0xa1a1a1a1);
232 const VideoCaptureControllerID client_a_route_2(0xa2a2a2a2); 230 const VideoCaptureControllerID client_a_route_2(0xa2a2a2a2);
233 const VideoCaptureControllerID client_b_route_1(0xb1b1b1b1); 231 const VideoCaptureControllerID client_b_route_1(0xb1b1b1b1);
234 const VideoCaptureControllerID client_b_route_2(0xb2b2b2b2); 232 const VideoCaptureControllerID client_b_route_2(0xb2b2b2b2);
235 233
236 // Start with two clients. 234 // Start with two clients.
237 controller_->AddClient(client_a_route_1, client_a_.get(), 235 controller_->AddClient(client_a_route_1, client_a_.get(),
238 base::kNullProcessHandle, session_100); 236 base::kNullProcessHandle, session_100);
239 controller_->AddClient(client_b_route_1, client_b_.get(), 237 controller_->AddClient(client_b_route_1, client_b_.get(),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 Mock::VerifyAndClearExpectations(client_a_.get()); 374 Mock::VerifyAndClearExpectations(client_a_.get());
377 Mock::VerifyAndClearExpectations(client_b_.get()); 375 Mock::VerifyAndClearExpectations(client_b_.get());
378 } 376 }
379 377
380 // Exercises the OnError() codepath of VideoCaptureController, and tests the 378 // Exercises the OnError() codepath of VideoCaptureController, and tests the
381 // behavior of various operations after the error state has been signalled. 379 // behavior of various operations after the error state has been signalled.
382 TEST_F(VideoCaptureControllerTest, ErrorBeforeDeviceCreation) { 380 TEST_F(VideoCaptureControllerTest, ErrorBeforeDeviceCreation) {
383 media::VideoCaptureParams session_100; 381 media::VideoCaptureParams session_100;
384 session_100.session_id = 100; 382 session_100.session_id = 100;
385 session_100.requested_format = media::VideoCaptureFormat( 383 session_100.requested_format = media::VideoCaptureFormat(
386 320, 240, 30, media::ConstantResolutionVideoCaptureDevice); 384 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
387 385
388 media::VideoCaptureParams session_200 = session_100; 386 media::VideoCaptureParams session_200 = session_100;
389 session_200.session_id = 200; 387 session_200.session_id = 200;
390 388
391 const gfx::Size capture_resolution(320, 240); 389 const gfx::Size capture_resolution(320, 240);
392 390
393 const VideoCaptureControllerID route_id(0x99); 391 const VideoCaptureControllerID route_id(0x99);
394 392
395 // Start with one client. 393 // Start with one client.
396 controller_->AddClient(route_id, client_a_.get(), 394 controller_->AddClient(route_id, client_a_.get(),
(...skipping 21 matching lines...) Expand all
418 416
419 base::RunLoop().RunUntilIdle(); 417 base::RunLoop().RunUntilIdle();
420 } 418 }
421 419
422 // Exercises the OnError() codepath of VideoCaptureController, and tests the 420 // Exercises the OnError() codepath of VideoCaptureController, and tests the
423 // behavior of various operations after the error state has been signalled. 421 // behavior of various operations after the error state has been signalled.
424 TEST_F(VideoCaptureControllerTest, ErrorAfterDeviceCreation) { 422 TEST_F(VideoCaptureControllerTest, ErrorAfterDeviceCreation) {
425 media::VideoCaptureParams session_100; 423 media::VideoCaptureParams session_100;
426 session_100.session_id = 100; 424 session_100.session_id = 100;
427 session_100.requested_format = media::VideoCaptureFormat( 425 session_100.requested_format = media::VideoCaptureFormat(
428 320, 240, 30, media::ConstantResolutionVideoCaptureDevice); 426 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
429 427
430 media::VideoCaptureParams session_200 = session_100; 428 media::VideoCaptureParams session_200 = session_100;
431 session_200.session_id = 200; 429 session_200.session_id = 200;
432 430
433 const VideoCaptureControllerID route_id(0x99); 431 const VideoCaptureControllerID route_id(0x99);
434 432
435 // Start with one client. 433 // Start with one client.
436 controller_->AddClient(route_id, client_a_.get(), 434 controller_->AddClient(route_id, client_a_.get(),
437 base::kNullProcessHandle, session_100); 435 base::kNullProcessHandle, session_100);
438 // OnFrameInfo from the VCD should become a no-op after the error occurs. 436 media::VideoCaptureFormat device_format(
439 media::VideoCaptureCapability device_format( 437 gfx::Size(10, 10), 25, media::PIXEL_FORMAT_ARGB);
440 10, 10, 25, media::PIXEL_FORMAT_ARGB,
441 media::ConstantResolutionVideoCaptureDevice);
442 438
443 // Start the device. Then, before the first buffer, signal an error and 439 // Start the device. Then, before the first buffer, signal an error and
444 // deliver the buffer. The error should be propagated to clients; the buffer 440 // deliver the buffer. The error should be propagated to clients; the buffer
445 // should not be. 441 // should not be.
446 base::RunLoop().RunUntilIdle(); 442 base::RunLoop().RunUntilIdle();
447 Mock::VerifyAndClearExpectations(client_a_.get()); 443 Mock::VerifyAndClearExpectations(client_a_.get());
448 444
449 const gfx::Size dims(320, 240); 445 const gfx::Size dims(320, 240);
450 scoped_refptr<media::VideoCaptureDevice::Client::Buffer> buffer = 446 scoped_refptr<media::VideoCaptureDevice::Client::Buffer> buffer =
451 device_->ReserveOutputBuffer(media::VideoFrame::I420, dims); 447 device_->ReserveOutputBuffer(media::VideoFrame::I420, dims);
(...skipping 13 matching lines...) Expand all
465 461
466 // Second client connects after the error state. It also should get told of 462 // Second client connects after the error state. It also should get told of
467 // the error. 463 // the error.
468 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1); 464 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1);
469 controller_->AddClient(route_id, client_b_.get(), 465 controller_->AddClient(route_id, client_b_.get(),
470 base::kNullProcessHandle, session_200); 466 base::kNullProcessHandle, session_200);
471 Mock::VerifyAndClearExpectations(client_b_.get()); 467 Mock::VerifyAndClearExpectations(client_b_.get());
472 } 468 }
473 469
474 } // namespace content 470 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698