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

Unified Diff: content/renderer/media/media_stream_video_capture_source_unittest.cc

Issue 295483002: Make sure ReadyStateEnded is fired when video stream stops (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/renderer/media/media_stream_video_capturer_source.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/media_stream_video_capture_source_unittest.cc
diff --git a/content/renderer/media/media_stream_video_capture_source_unittest.cc b/content/renderer/media/media_stream_video_capture_source_unittest.cc
index a204f1e2381bb9371fd79bc1e099bf0695873cd8..a26abb12b7a3cd5c9741705b8509bd5f870ff15b 100644
--- a/content/renderer/media/media_stream_video_capture_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_capture_source_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/bind.h"
+#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "content/child/child_process.h"
#include "content/renderer/media/media_stream_video_capturer_source.h"
@@ -21,8 +22,8 @@ class MockVideoCapturerDelegate : public VideoCapturerDelegate {
MOCK_METHOD3(StartCapture,
void(const media::VideoCaptureParams& params,
const VideoCaptureDeliverFrameCB& new_frame_callback,
- const StartedCallback& started_callback));
- MOCK_METHOD0(StopCapture,void());
+ const RunningCallback& running_callback));
+ MOCK_METHOD0(StopCapture, void());
private:
virtual ~MockVideoCapturerDelegate() {}
@@ -60,14 +61,19 @@ class MediaStreamVideoCapturerSourceTest : public testing::Test {
enabled);
}
+ MockVideoCapturerDelegate& mock_delegate() {
+ return *static_cast<MockVideoCapturerDelegate*>(delegate_.get());
+ }
+
protected:
void OnConstraintsApplied(MediaStreamSource* source, bool success) {
}
+ base::MessageLoop message_loop_;
scoped_ptr<ChildProcess> child_process_;
blink::WebMediaStreamSource webkit_source_;
MediaStreamVideoCapturerSource* source_; // owned by webkit_source.
- scoped_refptr<MockVideoCapturerDelegate> delegate_;
+ scoped_refptr<VideoCapturerDelegate> delegate_;
};
TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureAllowResolutionChange) {
@@ -75,13 +81,13 @@ TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureAllowResolutionChange) {
device_info.device.type = MEDIA_TAB_VIDEO_CAPTURE;
InitWithDeviceInfo(device_info);
- EXPECT_CALL(*delegate_, StartCapture(
+ EXPECT_CALL(mock_delegate(), StartCapture(
testing::Field(&media::VideoCaptureParams::allow_resolution_change, true),
testing::_,
testing::_)).Times(1);
blink::WebMediaStreamTrack track = StartSource();
// When the track goes out of scope, the source will be stopped.
- EXPECT_CALL(*delegate_, StopCapture());
+ EXPECT_CALL(mock_delegate(), StopCapture());
}
TEST_F(MediaStreamVideoCapturerSourceTest,
@@ -90,13 +96,39 @@ TEST_F(MediaStreamVideoCapturerSourceTest,
device_info.device.type = MEDIA_DESKTOP_VIDEO_CAPTURE;
InitWithDeviceInfo(device_info);
- EXPECT_CALL(*delegate_, StartCapture(
+ EXPECT_CALL(mock_delegate(), StartCapture(
testing::Field(&media::VideoCaptureParams::allow_resolution_change, true),
testing::_,
testing::_)).Times(1);
blink::WebMediaStreamTrack track = StartSource();
// When the track goes out of scope, the source will be stopped.
- EXPECT_CALL(*delegate_, StopCapture());
+ EXPECT_CALL(mock_delegate(), StopCapture());
+}
+
+TEST_F(MediaStreamVideoCapturerSourceTest, Ended) {
+ StreamDeviceInfo device_info;
+ device_info.device.type = MEDIA_DESKTOP_VIDEO_CAPTURE;
+ delegate_ = new VideoCapturerDelegate(device_info);
+ source_ = new MediaStreamVideoCapturerSource(
+ device_info,
+ MediaStreamSource::SourceStoppedCallback(),
+ delegate_);
+ webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
+ blink::WebMediaStreamSource::TypeVideo,
+ base::UTF8ToUTF16("dummy_source_name"));
+ webkit_source_.setExtraData(source_);
+ blink::WebMediaStreamTrack track = StartSource();
+ message_loop_.RunUntilIdle();
+
+ delegate_->OnStateUpdateOnRenderThread(VIDEO_CAPTURE_STATE_STARTED);
+ message_loop_.RunUntilIdle();
+ EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
+ webkit_source_.readyState());
+
+ delegate_->OnStateUpdateOnRenderThread(VIDEO_CAPTURE_STATE_ERROR);
+ message_loop_.RunUntilIdle();
+ EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
+ webkit_source_.readyState());
}
} // namespace content
« no previous file with comments | « no previous file | content/renderer/media/media_stream_video_capturer_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698