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

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

Issue 131763002: Adds MediaStreamSource, MediaStreamAudioSource and MediaStreamVideoCaptureDeviceSource (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 11 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_source_unittest.cc
diff --git a/content/renderer/media/media_stream_video_source_unittest.cc b/content/renderer/media/media_stream_video_source_unittest.cc
index 946707bcdd159be6255f8cee047a5b9697b870ba..38950f75a1bc2ca13b47547990caef2634302833 100644
--- a/content/renderer/media/media_stream_video_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_source_unittest.cc
@@ -16,13 +16,9 @@ class DummyMediaStreamVideoSource : public MediaStreamVideoSource {
public:
DummyMediaStreamVideoSource(MediaStreamDependencyFactory* factory)
: MediaStreamVideoSource(factory) {
- Init();
- SetVideoSource(GetAdapter());
- SetReadyState(blink::WebMediaStreamSource::ReadyStateLive);
}
virtual ~DummyMediaStreamVideoSource() {
- SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
}
void OnNewFrame(const scoped_refptr<media::VideoFrame>& frame) {
@@ -33,8 +29,9 @@ class DummyMediaStreamVideoSource : public MediaStreamVideoSource {
class MediaStreamVideoSourceTest
: public ::testing::Test {
public:
- MediaStreamVideoSourceTest() {
- factory_.EnsurePeerConnectionFactory();
+ MediaStreamVideoSourceTest()
+ : number_of_successful_constraints_applied_(0),
+ number_of_failed_constraints_applied_(0) {
webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
blink::WebMediaStreamSource::TypeVideo,
base::UTF8ToUTF16("dummy_source_name"));
@@ -43,12 +40,33 @@ class MediaStreamVideoSourceTest
protected:
// Create a track that's associated with |webkit_source_|.
- blink::WebMediaStreamTrack CreateTrack(const std::string& id) {
+ blink::WebMediaStreamTrack CreateTrack(
+ const std::string& id,
+ const blink::WebMediaConstraints& constraints) {
blink::WebMediaStreamTrack track;
track.initialize(base::UTF8ToUTF16(id), webkit_source_);
+
+ DummyMediaStreamVideoSource* source =
+ static_cast<DummyMediaStreamVideoSource*>(track.source().extraData());
+
+ source->AddTrack(track,
+ constraints,
+ base::Bind(
+ &MediaStreamVideoSourceTest::OnConstraintsApplied,
+ base::Unretained(this)));
return track;
}
+ // Simulate that the underlying device start successfully.
+ void StartSource() {
+ factory_.last_video_source()->SetLive();
+ }
+
+ // Simulate that the underlying device fail to start.
+ void FailToStartSource() {
+ factory_.last_video_source()->SetEnded();
+ }
+
void VerifyFrame(int width, int height, int num) {
DummyMediaStreamVideoSource* source =
static_cast<DummyMediaStreamVideoSource*>(webkit_source_.extraData());
@@ -58,17 +76,69 @@ class MediaStreamVideoSourceTest
EXPECT_EQ(height, adapter->GetLastFrameHeight());
EXPECT_EQ(num, adapter->GetFrameNum());
}
+
+ int NumberOfSuccessConstraintsCallbacks() const {
+ return number_of_successful_constraints_applied_;
+ }
+
+ int NumberOfFailedConstraintsCallbacks() const {
+ return number_of_failed_constraints_applied_;
+ }
+
private:
+ void OnConstraintsApplied(MediaStreamSource* source, bool success) {
+ ASSERT_EQ(source, webkit_source_.extraData());
+
+ if (success)
+ ++number_of_successful_constraints_applied_;
+ else
+ ++number_of_failed_constraints_applied_;
+ }
+
+ int number_of_successful_constraints_applied_;
+ int number_of_failed_constraints_applied_;
MockMediaStreamDependencyFactory factory_;
blink::WebMediaStreamSource webkit_source_;
};
+TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartAdapter) {
+ blink::WebMediaConstraints constraints;
+ blink::WebMediaStreamTrack track = CreateTrack("123", constraints);
+ StartSource();
+ EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
+}
+
+TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeAdapterStart) {
+ blink::WebMediaConstraints constraints;
+ blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints);
+ blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints);
+ EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks());
+ StartSource();
+ EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
+}
+
+TEST_F(MediaStreamVideoSourceTest, AddTrackAfterAdapterStart) {
+ blink::WebMediaConstraints constraints;
+ blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints);
+ StartSource();
+ EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
+ blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints);
+ EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
+}
+
+TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartAdapter) {
+ blink::WebMediaConstraints constraints;
+ blink::WebMediaStreamTrack track = CreateTrack("123", constraints);
+ FailToStartSource();
+ EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
+}
+
TEST_F(MediaStreamVideoSourceTest, DeliverVideoFrame) {
blink::WebMediaConstraints constraints;
- blink::WebMediaStreamTrack track = CreateTrack("123");
+ blink::WebMediaStreamTrack track = CreateTrack("123", constraints);
+ StartSource();
DummyMediaStreamVideoSource* source =
static_cast<DummyMediaStreamVideoSource*>(track.source().extraData());
- source->AddTrack(track, constraints);
VerifyFrame(0, 0, 0);
const int kWidth = 640;
const int kHeight = 480;
« no previous file with comments | « content/renderer/media/media_stream_video_source.cc ('k') | content/renderer/media/mock_media_stream_dependency_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698