| 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 VideoCaptureManager. | 5 // Unit test for VideoCaptureManager. |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 // Listener class used to track progress of VideoCaptureManager test. | 32 // Listener class used to track progress of VideoCaptureManager test. |
| 33 class MockMediaStreamProviderListener : public MediaStreamProviderListener { | 33 class MockMediaStreamProviderListener : public MediaStreamProviderListener { |
| 34 public: | 34 public: |
| 35 MockMediaStreamProviderListener() {} | 35 MockMediaStreamProviderListener() {} |
| 36 ~MockMediaStreamProviderListener() {} | 36 ~MockMediaStreamProviderListener() {} |
| 37 | 37 |
| 38 MOCK_METHOD2(Opened, void(MediaStreamType, int)); | 38 MOCK_METHOD2(Opened, void(MediaStreamType, int)); |
| 39 MOCK_METHOD2(Closed, void(MediaStreamType, int)); | 39 MOCK_METHOD2(Closed, void(MediaStreamType, int)); |
| 40 MOCK_METHOD2(DevicesEnumerated, void(MediaStreamType, | 40 MOCK_METHOD2(DevicesEnumerated, void(MediaStreamType, |
| 41 const StreamDeviceInfoArray&)); | 41 const StreamDeviceInfoArray&)); |
| 42 MOCK_METHOD3(Error, void(MediaStreamType, int, | 42 MOCK_METHOD2(Aborted, void(MediaStreamType, int)); |
| 43 MediaStreamProviderError)); | |
| 44 }; // class MockMediaStreamProviderListener | 43 }; // class MockMediaStreamProviderListener |
| 45 | 44 |
| 46 // Needed as an input argument to StartCaptureForClient(). | 45 // Needed as an input argument to StartCaptureForClient(). |
| 47 class MockFrameObserver : public VideoCaptureControllerEventHandler { | 46 class MockFrameObserver : public VideoCaptureControllerEventHandler { |
| 48 public: | 47 public: |
| 49 MOCK_METHOD1(OnError, void(const VideoCaptureControllerID& id)); | 48 MOCK_METHOD1(OnError, void(const VideoCaptureControllerID& id)); |
| 50 | 49 |
| 51 virtual void OnBufferCreated(const VideoCaptureControllerID& id, | 50 virtual void OnBufferCreated(const VideoCaptureControllerID& id, |
| 52 base::SharedMemoryHandle handle, | 51 base::SharedMemoryHandle handle, |
| 53 int length, int buffer_id) OVERRIDE {} | 52 int length, int buffer_id) OVERRIDE {} |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 client_id, | 119 client_id, |
| 121 run_loop.QuitClosure(), | 120 run_loop.QuitClosure(), |
| 122 expect_success)); | 121 expect_success)); |
| 123 run_loop.Run(); | 122 run_loop.Run(); |
| 124 return client_id; | 123 return client_id; |
| 125 } | 124 } |
| 126 | 125 |
| 127 void StopClient(VideoCaptureControllerID client_id) { | 126 void StopClient(VideoCaptureControllerID client_id) { |
| 128 ASSERT_TRUE(1 == controllers_.count(client_id)); | 127 ASSERT_TRUE(1 == controllers_.count(client_id)); |
| 129 vcm_->StopCaptureForClient(controllers_[client_id], client_id, | 128 vcm_->StopCaptureForClient(controllers_[client_id], client_id, |
| 130 frame_observer_.get()); | 129 frame_observer_.get(), false); |
| 131 controllers_.erase(client_id); | 130 controllers_.erase(client_id); |
| 132 } | 131 } |
| 133 | 132 |
| 134 int next_client_id_; | 133 int next_client_id_; |
| 135 std::map<VideoCaptureControllerID, VideoCaptureController*> controllers_; | 134 std::map<VideoCaptureControllerID, VideoCaptureController*> controllers_; |
| 136 scoped_refptr<VideoCaptureManager> vcm_; | 135 scoped_refptr<VideoCaptureManager> vcm_; |
| 137 scoped_ptr<MockMediaStreamProviderListener> listener_; | 136 scoped_ptr<MockMediaStreamProviderListener> listener_; |
| 138 scoped_ptr<base::MessageLoop> message_loop_; | 137 scoped_ptr<base::MessageLoop> message_loop_; |
| 139 scoped_ptr<BrowserThreadImpl> io_thread_; | 138 scoped_ptr<BrowserThreadImpl> io_thread_; |
| 140 scoped_ptr<MockFrameObserver> frame_observer_; | 139 scoped_ptr<MockFrameObserver> frame_observer_; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 164 VideoCaptureControllerID client_id = StartClient(video_session_id, true); | 163 VideoCaptureControllerID client_id = StartClient(video_session_id, true); |
| 165 | 164 |
| 166 StopClient(client_id); | 165 StopClient(client_id); |
| 167 vcm_->Close(video_session_id); | 166 vcm_->Close(video_session_id); |
| 168 | 167 |
| 169 // Wait to check callbacks before removing the listener. | 168 // Wait to check callbacks before removing the listener. |
| 170 message_loop_->RunUntilIdle(); | 169 message_loop_->RunUntilIdle(); |
| 171 vcm_->Unregister(); | 170 vcm_->Unregister(); |
| 172 } | 171 } |
| 173 | 172 |
| 173 // Try to open, start, and abort a device. |
| 174 TEST_F(VideoCaptureManagerTest, CreateAndAbort) { |
| 175 StreamDeviceInfoArray devices; |
| 176 |
| 177 InSequence s; |
| 178 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) |
| 179 .WillOnce(SaveArg<1>(&devices)); |
| 180 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)); |
| 181 EXPECT_CALL(*listener_, Aborted(MEDIA_DEVICE_VIDEO_CAPTURE, _)); |
| 182 |
| 183 vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE); |
| 184 |
| 185 // Wait to get device callback. |
| 186 message_loop_->RunUntilIdle(); |
| 187 |
| 188 int video_session_id = vcm_->Open(devices.front()); |
| 189 VideoCaptureControllerID client_id = StartClient(video_session_id, true); |
| 190 |
| 191 // Wait for device opened. |
| 192 message_loop_->RunUntilIdle(); |
| 193 |
| 194 vcm_->StopCaptureForClient(controllers_[client_id], client_id, |
| 195 frame_observer_.get(), true); |
| 196 |
| 197 // Wait to check callbacks before removing the listener. |
| 198 message_loop_->RunUntilIdle(); |
| 199 vcm_->Unregister(); |
| 200 } |
| 201 |
| 174 // Open the same device twice. | 202 // Open the same device twice. |
| 175 TEST_F(VideoCaptureManagerTest, OpenTwice) { | 203 TEST_F(VideoCaptureManagerTest, OpenTwice) { |
| 176 StreamDeviceInfoArray devices; | 204 StreamDeviceInfoArray devices; |
| 177 | 205 |
| 178 InSequence s; | 206 InSequence s; |
| 179 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) | 207 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) |
| 180 .WillOnce(SaveArg<1>(&devices)); | 208 .WillOnce(SaveArg<1>(&devices)); |
| 181 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); | 209 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); |
| 182 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); | 210 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); |
| 183 | 211 |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 477 |
| 450 // Wait to check callbacks before removing the listener | 478 // Wait to check callbacks before removing the listener |
| 451 message_loop_->RunUntilIdle(); | 479 message_loop_->RunUntilIdle(); |
| 452 vcm_->Unregister(); | 480 vcm_->Unregister(); |
| 453 } | 481 } |
| 454 | 482 |
| 455 // TODO(mcasas): Add a test to check consolidation of the supported formats | 483 // TODO(mcasas): Add a test to check consolidation of the supported formats |
| 456 // provided by the device when http://crbug.com/323913 is closed. | 484 // provided by the device when http://crbug.com/323913 is closed. |
| 457 | 485 |
| 458 } // namespace content | 486 } // namespace content |
| OLD | NEW |