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

Side by Side Diff: content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc

Issue 2790823002: Spec compliant video constraints for getUserMedia behind flag. (Closed)
Patch Set: rebase Created 3 years, 8 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
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 "content/renderer/media/webrtc/media_stream_remote_video_source.h" 5 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h"
6 6
7 #include <memory>
7 #include <utility> 8 #include <utility>
8 9
9 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 11 #include "base/run_loop.h"
11 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
12 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
13 #include "content/child/child_process.h" 14 #include "content/child/child_process.h"
14 #include "content/renderer/media/media_stream_video_track.h" 15 #include "content/renderer/media/media_stream_video_track.h"
15 #include "content/renderer/media/mock_media_stream_video_sink.h" 16 #include "content/renderer/media/mock_media_stream_video_sink.h"
16 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h" 17 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h"
(...skipping 21 matching lines...) Expand all
38 : public ::testing::Test { 39 : public ::testing::Test {
39 public: 40 public:
40 MediaStreamRemoteVideoSourceTest() 41 MediaStreamRemoteVideoSourceTest()
41 : child_process_(new ChildProcess()), 42 : child_process_(new ChildProcess()),
42 mock_factory_(new MockPeerConnectionDependencyFactory()), 43 mock_factory_(new MockPeerConnectionDependencyFactory()),
43 webrtc_video_track_(MockWebRtcVideoTrack::Create("test")), 44 webrtc_video_track_(MockWebRtcVideoTrack::Create("test")),
44 remote_source_(new MediaStreamRemoteVideoSourceUnderTest( 45 remote_source_(new MediaStreamRemoteVideoSourceUnderTest(
45 std::unique_ptr<TrackObserver>( 46 std::unique_ptr<TrackObserver>(
46 new TrackObserver(base::ThreadTaskRunnerHandle::Get(), 47 new TrackObserver(base::ThreadTaskRunnerHandle::Get(),
47 webrtc_video_track_.get())))), 48 webrtc_video_track_.get())))),
48 number_of_successful_constraints_applied_(0), 49 number_of_successful_track_starts_(0),
49 number_of_failed_constraints_applied_(0) { 50 number_of_failed_track_starts_(0) {
50 webkit_source_.initialize(blink::WebString::fromASCII("dummy_source_id"), 51 webkit_source_.initialize(blink::WebString::fromASCII("dummy_source_id"),
51 blink::WebMediaStreamSource::TypeVideo, 52 blink::WebMediaStreamSource::TypeVideo,
52 blink::WebString::fromASCII("dummy_source_name"), 53 blink::WebString::fromASCII("dummy_source_name"),
53 true /* remote */); 54 true /* remote */);
54 webkit_source_.setExtraData(remote_source_); 55 webkit_source_.setExtraData(remote_source_);
55 } 56 }
56 57
57 void TearDown() override { 58 void TearDown() override {
58 remote_source_->OnSourceTerminated(); 59 remote_source_->OnSourceTerminated();
59 webkit_source_.reset(); 60 webkit_source_.reset();
60 blink::WebHeap::collectAllGarbageForTesting(); 61 blink::WebHeap::collectAllGarbageForTesting();
61 } 62 }
62 63
63 MediaStreamRemoteVideoSourceUnderTest* source() { 64 MediaStreamRemoteVideoSourceUnderTest* source() {
64 return remote_source_; 65 return remote_source_;
65 } 66 }
66 67
67 MediaStreamVideoTrack* CreateTrack() { 68 MediaStreamVideoTrack* CreateTrack() {
68 bool enabled = true; 69 bool enabled = true;
69 blink::WebMediaConstraints constraints;
70 constraints.initialize();
71 return new MediaStreamVideoTrack( 70 return new MediaStreamVideoTrack(
72 source(), 71 source(),
73 constraints, 72 base::Bind(&MediaStreamRemoteVideoSourceTest::OnTrackStarted,
74 base::Bind( 73 base::Unretained(this)),
75 &MediaStreamRemoteVideoSourceTest::OnConstraintsApplied,
76 base::Unretained(this)),
77 enabled); 74 enabled);
78 } 75 }
79 76
80 int NumberOfSuccessConstraintsCallbacks() const { 77 int NumberOfSuccessConstraintsCallbacks() const {
81 return number_of_successful_constraints_applied_; 78 return number_of_successful_track_starts_;
82 } 79 }
83 80
84 int NumberOfFailedConstraintsCallbacks() const { 81 int NumberOfFailedConstraintsCallbacks() const {
85 return number_of_failed_constraints_applied_; 82 return number_of_failed_track_starts_;
86 } 83 }
87 84
88 void StopWebRtcTrack() { 85 void StopWebRtcTrack() {
89 static_cast<MockWebRtcVideoTrack*>(webrtc_video_track_.get())->SetEnded(); 86 static_cast<MockWebRtcVideoTrack*>(webrtc_video_track_.get())->SetEnded();
90 } 87 }
91 88
92 const blink::WebMediaStreamSource& webkit_source() const { 89 const blink::WebMediaStreamSource& webkit_source() const {
93 return webkit_source_; 90 return webkit_source_;
94 } 91 }
95 92
96 private: 93 private:
97 void OnConstraintsApplied(MediaStreamSource* source, 94 void OnTrackStarted(MediaStreamSource* source,
98 MediaStreamRequestResult result, 95 MediaStreamRequestResult result,
99 const blink::WebString& result_name) { 96 const blink::WebString& result_name) {
100 ASSERT_EQ(source, remote_source_); 97 ASSERT_EQ(source, remote_source_);
101 if (result == MEDIA_DEVICE_OK) 98 if (result == MEDIA_DEVICE_OK)
102 ++number_of_successful_constraints_applied_; 99 ++number_of_successful_track_starts_;
103 else 100 else
104 ++number_of_failed_constraints_applied_; 101 ++number_of_failed_track_starts_;
105 } 102 }
106 103
107 base::MessageLoopForUI message_loop_; 104 base::MessageLoopForUI message_loop_;
108 std::unique_ptr<ChildProcess> child_process_; 105 std::unique_ptr<ChildProcess> child_process_;
109 std::unique_ptr<MockPeerConnectionDependencyFactory> mock_factory_; 106 std::unique_ptr<MockPeerConnectionDependencyFactory> mock_factory_;
110 scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_; 107 scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_;
111 // |remote_source_| is owned by |webkit_source_|. 108 // |remote_source_| is owned by |webkit_source_|.
112 MediaStreamRemoteVideoSourceUnderTest* remote_source_; 109 MediaStreamRemoteVideoSourceUnderTest* remote_source_;
113 blink::WebMediaStreamSource webkit_source_; 110 blink::WebMediaStreamSource webkit_source_;
114 int number_of_successful_constraints_applied_; 111 int number_of_successful_track_starts_;
115 int number_of_failed_constraints_applied_; 112 int number_of_failed_track_starts_;
116 }; 113 };
117 114
118 TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) { 115 TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) {
119 std::unique_ptr<MediaStreamVideoTrack> track(CreateTrack()); 116 std::unique_ptr<MediaStreamVideoTrack> track(CreateTrack());
120 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 117 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
121 118
122 MockMediaStreamVideoSink sink; 119 MockMediaStreamVideoSink sink;
123 track->AddSink(&sink, sink.GetDeliverFrameCB(), false); 120 track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
124 base::RunLoop run_loop; 121 base::RunLoop run_loop;
125 base::Closure quit_closure = run_loop.QuitClosure(); 122 base::Closure quit_closure = run_loop.QuitClosure();
(...skipping 23 matching lines...) Expand all
149 StopWebRtcTrack(); 146 StopWebRtcTrack();
150 base::RunLoop().RunUntilIdle(); 147 base::RunLoop().RunUntilIdle();
151 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 148 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
152 webkit_source().getReadyState()); 149 webkit_source().getReadyState());
153 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state()); 150 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state());
154 151
155 track->RemoveSink(&sink); 152 track->RemoveSink(&sink);
156 } 153 }
157 154
158 } // namespace content 155 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/video_track_adapter.cc ('k') | content/renderer/media/webrtc/media_stream_video_webrtc_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698