public:
MediaStreamVideoCapturerSourceTest()
: child_process_(new ChildProcess()),
- source_(NULL) {
+ source_(NULL),
+ source_stopped_(false) {
}
void InitWithDeviceInfo(const StreamDeviceInfo& device_info) {
delegate_ = new MockVideoCapturerDelegate(device_info);
source_ = new MediaStreamVideoCapturerSource(
device_info,
- MediaStreamSource::SourceStoppedCallback(),
+ base::Bind(&MediaStreamVideoCapturerSourceTest::OnSourceStopped,
+ base::Unretained(this)),
delegate_);
webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
return *static_cast<MockVideoCapturerDelegate*>(delegate_.get());
}
+ void OnSourceStopped(const blink::WebMediaStreamSource& source) {
+ source_stopped_ = true;
+ EXPECT_EQ(source.id(), webkit_source_.id());
+ }
+
protected:
- void OnConstraintsApplied(MediaStreamSource* source, bool success) {
+ void OnConstraintsApplied(MediaStreamSource* source,
+ MediaStreamRequestResult result,
+ const blink::WebString& result_name) {
}
base::MessageLoopForUI message_loop_;
blink::WebMediaStreamSource webkit_source_;
MediaStreamVideoCapturerSource* source_; // owned by webkit_source.
scoped_refptr<VideoCapturerDelegate> delegate_;
+ bool source_stopped_;
};
TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureAllowResolutionChange) {
delegate_ = new VideoCapturerDelegate(device_info);
source_ = new MediaStreamVideoCapturerSource(
device_info,
- MediaStreamSource::SourceStoppedCallback(),
+ base::Bind(&MediaStreamVideoCapturerSourceTest::OnSourceStopped,
+ base::Unretained(this)),
delegate_);
webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
blink::WebMediaStreamSource::TypeVideo,
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
webkit_source_.readyState());
+ EXPECT_FALSE(source_stopped_);
delegate_->OnStateUpdateOnRenderThread(VIDEO_CAPTURE_STATE_ERROR);
message_loop_.RunUntilIdle();
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
webkit_source_.readyState());
+ // Verify that MediaStreamSource::SourceStoppedCallback has been triggered.
+ EXPECT_TRUE(source_stopped_);
}
class FakeMediaStreamVideoSink : public MediaStreamVideoSink {
testing::SaveArg<2>(&running_cb)));
EXPECT_CALL(mock_delegate(), StopCapture());
blink::WebMediaStreamTrack track = StartSource();
- running_cb.Run(true);
+ running_cb.Run(MEDIA_DEVICE_OK);
base::RunLoop run_loop;
base::TimeTicks reference_capture_time =