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

Side by Side Diff: content/renderer/media/media_stream_video_source_unittest.cc

Issue 366243003: VideoTrackAdapter: Add passing frames monitor, notify MSVCS -> MSVTrack(s) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: grunell@ comments and added a UT with 1 source muted pinging two tracks. Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "content/child/child_process.h" 13 #include "content/child/child_process.h"
14 #include "content/renderer/media/media_stream_video_source.h" 14 #include "content/renderer/media/media_stream_video_source.h"
15 #include "content/renderer/media/media_stream_video_track.h" 15 #include "content/renderer/media/media_stream_video_track.h"
16 #include "content/renderer/media/mock_media_constraint_factory.h" 16 #include "content/renderer/media/mock_media_constraint_factory.h"
17 #include "content/renderer/media/mock_media_stream_video_sink.h" 17 #include "content/renderer/media/mock_media_stream_video_sink.h"
18 #include "content/renderer/media/mock_media_stream_video_source.h" 18 #include "content/renderer/media/mock_media_stream_video_source.h"
19 #include "media/base/video_frame.h" 19 #include "media/base/video_frame.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 21
22 using ::testing::_;
23 using ::testing::DoAll;
24 using ::testing::SaveArg;
25
22 namespace content { 26 namespace content {
23 27
24 ACTION_P(RunClosure, closure) { 28 ACTION_P(RunClosure, closure) {
25 closure.Run(); 29 closure.Run();
26 } 30 }
27 31
28 class MediaStreamVideoSourceTest 32 class MediaStreamVideoSourceTest
29 : public ::testing::Test { 33 : public ::testing::Test {
30 public: 34 public:
31 MediaStreamVideoSourceTest() 35 MediaStreamVideoSourceTest()
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 EXPECT_EQ(0, sink.number_of_frames()); 717 EXPECT_EQ(0, sink.number_of_frames());
714 DeliverVideoFrameAndWaitForRenderer(320, 240, &sink); 718 DeliverVideoFrameAndWaitForRenderer(320, 240, &sink);
715 EXPECT_EQ(1, sink.number_of_frames()); 719 EXPECT_EQ(1, sink.number_of_frames());
716 // Expect the delivered frame to be passed unchanged since its smaller than 720 // Expect the delivered frame to be passed unchanged since its smaller than
717 // max requested. 721 // max requested.
718 EXPECT_EQ(320, sink.frame_size().width()); 722 EXPECT_EQ(320, sink.frame_size().width());
719 EXPECT_EQ(240, sink.frame_size().height()); 723 EXPECT_EQ(240, sink.frame_size().height());
720 MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track); 724 MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
721 } 725 }
722 726
727 // Test that a source producing no frames calls back the MSVCS to tell so, and
728 // this in turn tells the Track attached.
729 TEST_F(MediaStreamVideoSourceTest, MutedSource) {
730 MockMediaConstraintFactory factory;
731 blink::WebMediaStreamTrack track =
732 CreateTrackAndStartSource(factory.CreateWebMediaConstraints(),
733 640, 480, 30);
734
735 MockMediaStreamVideoSink sink;
736 MediaStreamVideoSink::AddToVideoTrack(&sink, sink.GetDeliverFrameCB(), track);
737 EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), false);
738
739 base::RunLoop run_loop;
740 base::Closure quit_closure = run_loop.QuitClosure();
741 bool muted_state = false;
742 EXPECT_CALL(*mock_source(), DoSetMutedState(_))
743 .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure)));
744 run_loop.Run();
745 EXPECT_EQ(muted_state, true);
746 // TODO(mcasas): When added, check |track|'s (WebMediaStreamTrack) Muted
747 // attribute, should be true. In the meantime, check the MediaStreamTrack's.
748 EXPECT_EQ(MediaStreamTrack::GetTrack(track)->GetMutedState(), true);
749
750 MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
751 }
752
753 // Test that a source producing no frames calls back the MSVCS to tell so, and
754 // this in turn tells all the Tracks attached.
755 TEST_F(MediaStreamVideoSourceTest, MutedSourceWithTwoTracks) {
756 MockMediaConstraintFactory factory1;
757 blink::WebMediaStreamTrack track1 =
758 CreateTrackAndStartSource(factory1.CreateWebMediaConstraints(),
759 MediaStreamVideoSource::kDefaultWidth,
760 MediaStreamVideoSource::kDefaultHeight,
761 30);
762
763 MockMediaConstraintFactory factory2;
764 factory2.AddMandatory(MediaStreamVideoSource::kMaxFrameRate, 15);
765 blink::WebMediaStreamTrack track2 = CreateTrack(
766 "123", factory2.CreateWebMediaConstraints());
767 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
768
769 MockMediaStreamVideoSink sink1;
770 MediaStreamVideoSink::AddToVideoTrack(&sink1, sink1.GetDeliverFrameCB(),
771 track1);
772 EXPECT_EQ(MediaStreamTrack::GetTrack(track1)->GetMutedState(), false);
773
774 MockMediaStreamVideoSink sink2;
775 MediaStreamVideoSink::AddToVideoTrack(&sink2, sink2.GetDeliverFrameCB(),
776 track2);
777 EXPECT_EQ(MediaStreamTrack::GetTrack(track2)->GetMutedState(), false);
778
779 base::RunLoop run_loop;
780 base::Closure quit_closure = run_loop.QuitClosure();
781 bool muted_state = false;
782 EXPECT_CALL(*mock_source(), DoSetMutedState(_))
783 .WillOnce(DoAll(SaveArg<0>(&muted_state), RunClosure(quit_closure)));
784 run_loop.Run();
785 EXPECT_EQ(muted_state, true);
786
787 // TODO(mcasas): When added, check |track|'s (WebMediaStreamTrack) Muted
788 // attribute, should be true. In the meantime, check the MediaStreamTrack's.
789 EXPECT_EQ(MediaStreamTrack::GetTrack(track1)->GetMutedState(), true);
790 EXPECT_EQ(MediaStreamTrack::GetTrack(track2)->GetMutedState(), true);
791
792 MediaStreamVideoSink::RemoveFromVideoTrack(&sink1, track1);
793 MediaStreamVideoSink::RemoveFromVideoTrack(&sink2, track2);
794 }
Henrik Grunell 2014/07/10 08:41:34 I would recommend to add a test where the state go
mcasas 2014/07/10 11:59:04 Extended "MutedSource" to do that.
795
723 } // namespace content 796 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698