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

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

Issue 287313002: Pass a TimeTicks along video capture pipeline to represent capture time (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged and land 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
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 65deacbb38234be969257773541fbea70b37509a..fca4562a93d1d8f634be490063258ce1d024fa5e 100644
--- a/content/renderer/media/media_stream_video_capture_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_capture_source_unittest.cc
@@ -3,12 +3,16 @@
// found in the LICENSE file.
#include "base/bind.h"
+#include "base/callback_helpers.h"
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "content/child/child_process.h"
+#include "content/public/renderer/media_stream_video_sink.h"
#include "content/renderer/media/media_stream_video_capturer_source.h"
#include "content/renderer/media/media_stream_video_track.h"
#include "content/renderer/media/mock_media_constraint_factory.h"
+#include "media/base/bind_to_current_loop.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -131,4 +135,66 @@ TEST_F(MediaStreamVideoCapturerSourceTest, Ended) {
webkit_source_.readyState());
}
+class FakeMediaStreamVideoSink : public MediaStreamVideoSink {
+ public:
+ FakeMediaStreamVideoSink(base::TimeTicks* capture_time,
+ base::Closure got_frame_cb)
+ : capture_time_(capture_time),
+ got_frame_cb_(got_frame_cb) {
+ }
+
+ void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame,
+ const media::VideoCaptureFormat& format,
+ const base::TimeTicks& capture_time) {
+ *capture_time_ = capture_time;
+ base::ResetAndReturn(&got_frame_cb_).Run();
+ }
+
+ private:
+ base::TimeTicks* capture_time_;
+ base::Closure got_frame_cb_;
+};
+
+TEST_F(MediaStreamVideoCapturerSourceTest, CaptureTime) {
+ StreamDeviceInfo device_info;
+ device_info.device.type = MEDIA_DESKTOP_VIDEO_CAPTURE;
+ InitWithDeviceInfo(device_info);
+
+ VideoCaptureDeliverFrameCB deliver_frame_cb;
+ VideoCapturerDelegate::RunningCallback running_cb;
+
+ EXPECT_CALL(mock_delegate(), StartCapture(
+ testing::_,
+ testing::_,
+ testing::_))
+ .Times(1)
+ .WillOnce(testing::DoAll(testing::SaveArg<1>(&deliver_frame_cb),
+ testing::SaveArg<2>(&running_cb)));
+ EXPECT_CALL(mock_delegate(), StopCapture());
+ blink::WebMediaStreamTrack track = StartSource();
+ running_cb.Run(true);
+
+ base::RunLoop run_loop;
+ base::TimeTicks reference_capture_time =
+ base::TimeTicks::FromInternalValue(60013);
+ base::TimeTicks capture_time;
+ FakeMediaStreamVideoSink fake_sink(
+ &capture_time,
+ media::BindToCurrentLoop(run_loop.QuitClosure()));
+ FakeMediaStreamVideoSink::AddToVideoTrack(
+ &fake_sink,
+ base::Bind(&FakeMediaStreamVideoSink::OnVideoFrame,
+ base::Unretained(&fake_sink)),
+ track);
+ child_process_->io_message_loop()->PostTask(
+ FROM_HERE,
+ base::Bind(deliver_frame_cb,
+ media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)),
+ media::VideoCaptureFormat(),
+ reference_capture_time));
+ run_loop.Run();
+ FakeMediaStreamVideoSink::RemoveFromVideoTrack(&fake_sink, track);
+ EXPECT_EQ(reference_capture_time, capture_time);
+}
+
} // namespace content
« no previous file with comments | « content/public/renderer/media_stream_video_sink.cc ('k') | content/renderer/media/media_stream_video_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698