OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "content/renderer/media/media_stream_extra_data.h" | 7 #include "content/renderer/media/media_stream_extra_data.h" |
8 #include "content/renderer/media/media_stream_impl.h" | 8 #include "content/renderer/media/media_stream_impl.h" |
9 #include "content/renderer/media/mock_media_stream_dependency_factory.h" | 9 #include "content/renderer/media/mock_media_stream_dependency_factory.h" |
10 #include "content/renderer/media/mock_media_stream_dispatcher.h" | 10 #include "content/renderer/media/mock_media_stream_dispatcher.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 REQUEST_FAILED, | 27 REQUEST_FAILED, |
28 }; | 28 }; |
29 | 29 |
30 MediaStreamImplUnderTest(MediaStreamDispatcher* media_stream_dispatcher, | 30 MediaStreamImplUnderTest(MediaStreamDispatcher* media_stream_dispatcher, |
31 MediaStreamDependencyFactory* dependency_factory) | 31 MediaStreamDependencyFactory* dependency_factory) |
32 : MediaStreamImpl(NULL, media_stream_dispatcher, dependency_factory), | 32 : MediaStreamImpl(NULL, media_stream_dispatcher, dependency_factory), |
33 state_(REQUEST_NOT_STARTED) { | 33 state_(REQUEST_NOT_STARTED) { |
34 } | 34 } |
35 | 35 |
36 void RequestUserMedia() { | 36 void RequestUserMedia() { |
37 WebKit::WebUserMediaRequest user_media_request; | 37 blink::WebUserMediaRequest user_media_request; |
38 state_ = REQUEST_NOT_COMPLETE; | 38 state_ = REQUEST_NOT_COMPLETE; |
39 requestUserMedia(user_media_request); | 39 requestUserMedia(user_media_request); |
40 } | 40 } |
41 | 41 |
42 virtual void CompleteGetUserMediaRequest( | 42 virtual void CompleteGetUserMediaRequest( |
43 const WebKit::WebMediaStream& stream, | 43 const blink::WebMediaStream& stream, |
44 WebKit::WebUserMediaRequest* request_info, | 44 blink::WebUserMediaRequest* request_info, |
45 bool request_succeeded) OVERRIDE { | 45 bool request_succeeded) OVERRIDE { |
46 last_generated_stream_ = stream; | 46 last_generated_stream_ = stream; |
47 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED; | 47 state_ = request_succeeded ? REQUEST_SUCCEEDED : REQUEST_FAILED; |
48 } | 48 } |
49 | 49 |
50 virtual WebKit::WebMediaStream GetMediaStream( | 50 virtual blink::WebMediaStream GetMediaStream( |
51 const GURL& url) OVERRIDE { | 51 const GURL& url) OVERRIDE { |
52 return last_generated_stream_; | 52 return last_generated_stream_; |
53 } | 53 } |
54 | 54 |
55 using MediaStreamImpl::OnLocalMediaStreamStop; | 55 using MediaStreamImpl::OnLocalMediaStreamStop; |
56 using MediaStreamImpl::OnLocalSourceStop; | 56 using MediaStreamImpl::OnLocalSourceStop; |
57 | 57 |
58 const WebKit::WebMediaStream& last_generated_stream() { | 58 const blink::WebMediaStream& last_generated_stream() { |
59 return last_generated_stream_; | 59 return last_generated_stream_; |
60 } | 60 } |
61 | 61 |
62 RequestState request_state() const { return state_; } | 62 RequestState request_state() const { return state_; } |
63 | 63 |
64 private: | 64 private: |
65 WebKit::WebMediaStream last_generated_stream_; | 65 blink::WebMediaStream last_generated_stream_; |
66 RequestState state_; | 66 RequestState state_; |
67 }; | 67 }; |
68 | 68 |
69 class MediaStreamImplTest : public ::testing::Test { | 69 class MediaStreamImplTest : public ::testing::Test { |
70 public: | 70 public: |
71 virtual void SetUp() { | 71 virtual void SetUp() { |
72 // Create our test object. | 72 // Create our test object. |
73 ms_dispatcher_.reset(new MockMediaStreamDispatcher()); | 73 ms_dispatcher_.reset(new MockMediaStreamDispatcher()); |
74 dependency_factory_.reset(new MockMediaStreamDependencyFactory()); | 74 dependency_factory_.reset(new MockMediaStreamDependencyFactory()); |
75 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(), | 75 ms_impl_.reset(new MediaStreamImplUnderTest(ms_dispatcher_.get(), |
76 dependency_factory_.get())); | 76 dependency_factory_.get())); |
77 } | 77 } |
78 | 78 |
79 WebKit::WebMediaStream RequestLocalMediaStream() { | 79 blink::WebMediaStream RequestLocalMediaStream() { |
80 ms_impl_->RequestUserMedia(); | 80 ms_impl_->RequestUserMedia(); |
81 FakeMediaStreamDispatcherComplete(); | 81 FakeMediaStreamDispatcherComplete(); |
82 ChangeVideoSourceStateToLive(); | 82 ChangeVideoSourceStateToLive(); |
83 ChangeAudioSourceStateToLive(); | 83 ChangeAudioSourceStateToLive(); |
84 | 84 |
85 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, | 85 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, |
86 ms_impl_->request_state()); | 86 ms_impl_->request_state()); |
87 | 87 |
88 WebKit::WebMediaStream desc = ms_impl_->last_generated_stream(); | 88 blink::WebMediaStream desc = ms_impl_->last_generated_stream(); |
89 content::MediaStreamExtraData* extra_data = | 89 content::MediaStreamExtraData* extra_data = |
90 static_cast<content::MediaStreamExtraData*>(desc.extraData()); | 90 static_cast<content::MediaStreamExtraData*>(desc.extraData()); |
91 if (!extra_data || !extra_data->stream().get()) { | 91 if (!extra_data || !extra_data->stream().get()) { |
92 ADD_FAILURE(); | 92 ADD_FAILURE(); |
93 return desc; | 93 return desc; |
94 } | 94 } |
95 | 95 |
96 EXPECT_EQ(1u, extra_data->stream()->GetAudioTracks().size()); | 96 EXPECT_EQ(1u, extra_data->stream()->GetAudioTracks().size()); |
97 EXPECT_EQ(1u, extra_data->stream()->GetVideoTracks().size()); | 97 EXPECT_EQ(1u, extra_data->stream()->GetVideoTracks().size()); |
98 EXPECT_NE(extra_data->stream()->GetAudioTracks()[0]->id(), | 98 EXPECT_NE(extra_data->stream()->GetAudioTracks()[0]->id(), |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 } | 132 } |
133 | 133 |
134 protected: | 134 protected: |
135 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_; | 135 scoped_ptr<MockMediaStreamDispatcher> ms_dispatcher_; |
136 scoped_ptr<MediaStreamImplUnderTest> ms_impl_; | 136 scoped_ptr<MediaStreamImplUnderTest> ms_impl_; |
137 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; | 137 scoped_ptr<MockMediaStreamDependencyFactory> dependency_factory_; |
138 }; | 138 }; |
139 | 139 |
140 TEST_F(MediaStreamImplTest, GenerateMediaStream) { | 140 TEST_F(MediaStreamImplTest, GenerateMediaStream) { |
141 // Generate a stream with both audio and video. | 141 // Generate a stream with both audio and video. |
142 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(); | 142 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); |
143 } | 143 } |
144 | 144 |
145 // Test that the same source object is used if two MediaStreams are generated | 145 // Test that the same source object is used if two MediaStreams are generated |
146 // using the same source. | 146 // using the same source. |
147 TEST_F(MediaStreamImplTest, GenerateTwoMediaStreamsWithSameSource) { | 147 TEST_F(MediaStreamImplTest, GenerateTwoMediaStreamsWithSameSource) { |
148 WebKit::WebMediaStream desc1 = RequestLocalMediaStream(); | 148 blink::WebMediaStream desc1 = RequestLocalMediaStream(); |
149 WebKit::WebMediaStream desc2 = RequestLocalMediaStream(); | 149 blink::WebMediaStream desc2 = RequestLocalMediaStream(); |
150 | 150 |
151 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc1_video_tracks; | 151 blink::WebVector<blink::WebMediaStreamTrack> desc1_video_tracks; |
152 desc1.videoTracks(desc1_video_tracks); | 152 desc1.videoTracks(desc1_video_tracks); |
153 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc2_video_tracks; | 153 blink::WebVector<blink::WebMediaStreamTrack> desc2_video_tracks; |
154 desc2.videoTracks(desc2_video_tracks); | 154 desc2.videoTracks(desc2_video_tracks); |
155 EXPECT_EQ(desc1_video_tracks[0].source().id(), | 155 EXPECT_EQ(desc1_video_tracks[0].source().id(), |
156 desc2_video_tracks[0].source().id()); | 156 desc2_video_tracks[0].source().id()); |
157 | 157 |
158 EXPECT_EQ(desc1_video_tracks[0].source().extraData(), | 158 EXPECT_EQ(desc1_video_tracks[0].source().extraData(), |
159 desc2_video_tracks[0].source().extraData()); | 159 desc2_video_tracks[0].source().extraData()); |
160 | 160 |
161 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc1_audio_tracks; | 161 blink::WebVector<blink::WebMediaStreamTrack> desc1_audio_tracks; |
162 desc1.audioTracks(desc1_audio_tracks); | 162 desc1.audioTracks(desc1_audio_tracks); |
163 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc2_audio_tracks; | 163 blink::WebVector<blink::WebMediaStreamTrack> desc2_audio_tracks; |
164 desc2.audioTracks(desc2_audio_tracks); | 164 desc2.audioTracks(desc2_audio_tracks); |
165 EXPECT_EQ(desc1_audio_tracks[0].source().id(), | 165 EXPECT_EQ(desc1_audio_tracks[0].source().id(), |
166 desc2_audio_tracks[0].source().id()); | 166 desc2_audio_tracks[0].source().id()); |
167 | 167 |
168 EXPECT_EQ(desc1_audio_tracks[0].source().extraData(), | 168 EXPECT_EQ(desc1_audio_tracks[0].source().extraData(), |
169 desc2_audio_tracks[0].source().extraData()); | 169 desc2_audio_tracks[0].source().extraData()); |
170 } | 170 } |
171 | 171 |
172 // Test that the same source object is not used if two MediaStreams are | 172 // Test that the same source object is not used if two MediaStreams are |
173 // generated using different sources. | 173 // generated using different sources. |
174 TEST_F(MediaStreamImplTest, GenerateTwoMediaStreamsWithDifferentSources) { | 174 TEST_F(MediaStreamImplTest, GenerateTwoMediaStreamsWithDifferentSources) { |
175 WebKit::WebMediaStream desc1 = RequestLocalMediaStream(); | 175 blink::WebMediaStream desc1 = RequestLocalMediaStream(); |
176 // Make sure another device is selected (another |session_id|) in the next | 176 // Make sure another device is selected (another |session_id|) in the next |
177 // gUM request. | 177 // gUM request. |
178 ms_dispatcher_->IncrementSessionId(); | 178 ms_dispatcher_->IncrementSessionId(); |
179 WebKit::WebMediaStream desc2 = RequestLocalMediaStream(); | 179 blink::WebMediaStream desc2 = RequestLocalMediaStream(); |
180 | 180 |
181 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc1_video_tracks; | 181 blink::WebVector<blink::WebMediaStreamTrack> desc1_video_tracks; |
182 desc1.videoTracks(desc1_video_tracks); | 182 desc1.videoTracks(desc1_video_tracks); |
183 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc2_video_tracks; | 183 blink::WebVector<blink::WebMediaStreamTrack> desc2_video_tracks; |
184 desc2.videoTracks(desc2_video_tracks); | 184 desc2.videoTracks(desc2_video_tracks); |
185 EXPECT_NE(desc1_video_tracks[0].source().id(), | 185 EXPECT_NE(desc1_video_tracks[0].source().id(), |
186 desc2_video_tracks[0].source().id()); | 186 desc2_video_tracks[0].source().id()); |
187 | 187 |
188 EXPECT_NE(desc1_video_tracks[0].source().extraData(), | 188 EXPECT_NE(desc1_video_tracks[0].source().extraData(), |
189 desc2_video_tracks[0].source().extraData()); | 189 desc2_video_tracks[0].source().extraData()); |
190 | 190 |
191 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc1_audio_tracks; | 191 blink::WebVector<blink::WebMediaStreamTrack> desc1_audio_tracks; |
192 desc1.audioTracks(desc1_audio_tracks); | 192 desc1.audioTracks(desc1_audio_tracks); |
193 WebKit::WebVector<WebKit::WebMediaStreamTrack> desc2_audio_tracks; | 193 blink::WebVector<blink::WebMediaStreamTrack> desc2_audio_tracks; |
194 desc2.audioTracks(desc2_audio_tracks); | 194 desc2.audioTracks(desc2_audio_tracks); |
195 EXPECT_NE(desc1_audio_tracks[0].source().id(), | 195 EXPECT_NE(desc1_audio_tracks[0].source().id(), |
196 desc2_audio_tracks[0].source().id()); | 196 desc2_audio_tracks[0].source().id()); |
197 | 197 |
198 EXPECT_NE(desc1_audio_tracks[0].source().extraData(), | 198 EXPECT_NE(desc1_audio_tracks[0].source().extraData(), |
199 desc2_audio_tracks[0].source().extraData()); | 199 desc2_audio_tracks[0].source().extraData()); |
200 } | 200 } |
201 | 201 |
202 TEST_F(MediaStreamImplTest, StopLocalMediaStream) { | 202 TEST_F(MediaStreamImplTest, StopLocalMediaStream) { |
203 // Generate a stream with both audio and video. | 203 // Generate a stream with both audio and video. |
204 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(); | 204 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); |
205 | 205 |
206 // Stop generated local streams. | 206 // Stop generated local streams. |
207 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); | 207 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); |
208 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 208 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
209 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 209 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
210 } | 210 } |
211 | 211 |
212 // This test that a source is not stopped even if the MediaStream is stopped if | 212 // This test that a source is not stopped even if the MediaStream is stopped if |
213 // there are two MediaStreams using the same device. The source is stopped | 213 // there are two MediaStreams using the same device. The source is stopped |
214 // if there are no more MediaStreams using the device. | 214 // if there are no more MediaStreams using the device. |
215 TEST_F(MediaStreamImplTest, StopLocalMediaStreamWhenTwoStreamUseSameDevices) { | 215 TEST_F(MediaStreamImplTest, StopLocalMediaStreamWhenTwoStreamUseSameDevices) { |
216 // Generate a stream with both audio and video. | 216 // Generate a stream with both audio and video. |
217 WebKit::WebMediaStream desc1 = RequestLocalMediaStream(); | 217 blink::WebMediaStream desc1 = RequestLocalMediaStream(); |
218 WebKit::WebMediaStream desc2 = RequestLocalMediaStream(); | 218 blink::WebMediaStream desc2 = RequestLocalMediaStream(); |
219 | 219 |
220 ms_impl_->OnLocalMediaStreamStop(desc2.id().utf8()); | 220 ms_impl_->OnLocalMediaStreamStop(desc2.id().utf8()); |
221 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); | 221 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); |
222 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter()); | 222 EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter()); |
223 | 223 |
224 ms_impl_->OnLocalMediaStreamStop(desc1.id().utf8()); | 224 ms_impl_->OnLocalMediaStreamStop(desc1.id().utf8()); |
225 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 225 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
226 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 226 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
227 } | 227 } |
228 | 228 |
229 // Test that the source is stopped even if there are two MediaStreams using | 229 // Test that the source is stopped even if there are two MediaStreams using |
230 // the same source. | 230 // the same source. |
231 TEST_F(MediaStreamImplTest, StopSource) { | 231 TEST_F(MediaStreamImplTest, StopSource) { |
232 // Generate a stream with both audio and video. | 232 // Generate a stream with both audio and video. |
233 WebKit::WebMediaStream desc1 = RequestLocalMediaStream(); | 233 blink::WebMediaStream desc1 = RequestLocalMediaStream(); |
234 WebKit::WebMediaStream desc2 = RequestLocalMediaStream(); | 234 blink::WebMediaStream desc2 = RequestLocalMediaStream(); |
235 | 235 |
236 // Stop the video source. | 236 // Stop the video source. |
237 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; | 237 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; |
238 desc1.videoTracks(video_tracks); | 238 desc1.videoTracks(video_tracks); |
239 ms_impl_->OnLocalSourceStop(video_tracks[0].source()); | 239 ms_impl_->OnLocalSourceStop(video_tracks[0].source()); |
240 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); | 240 EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter()); |
241 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 241 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
242 | 242 |
243 // Stop the audio source. | 243 // Stop the audio source. |
244 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; | 244 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; |
245 desc1.audioTracks(audio_tracks); | 245 desc1.audioTracks(audio_tracks); |
246 ms_impl_->OnLocalSourceStop(audio_tracks[0].source()); | 246 ms_impl_->OnLocalSourceStop(audio_tracks[0].source()); |
247 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 247 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
248 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 248 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
249 } | 249 } |
250 | 250 |
251 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. | 251 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. |
252 // In the unit test the owning frame is NULL. | 252 // In the unit test the owning frame is NULL. |
253 TEST_F(MediaStreamImplTest, FrameWillClose) { | 253 TEST_F(MediaStreamImplTest, FrameWillClose) { |
254 // Test a stream with both audio and video. | 254 // Test a stream with both audio and video. |
255 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(); | 255 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); |
256 | 256 |
257 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. | 257 // Test that the MediaStreams are deleted if the owning WebFrame is deleted. |
258 // In the unit test the owning frame is NULL. | 258 // In the unit test the owning frame is NULL. |
259 ms_impl_->FrameWillClose(NULL); | 259 ms_impl_->FrameWillClose(NULL); |
260 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 260 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
261 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 261 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
262 } | 262 } |
263 | 263 |
264 // This test what happens if a source to a MediaSteam fails to start. | 264 // This test what happens if a source to a MediaSteam fails to start. |
265 TEST_F(MediaStreamImplTest, MediaSourceFailToStart) { | 265 TEST_F(MediaStreamImplTest, MediaSourceFailToStart) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 312 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
313 ChangeAudioSourceStateToLive(); | 313 ChangeAudioSourceStateToLive(); |
314 ChangeVideoSourceStateToLive(); | 314 ChangeVideoSourceStateToLive(); |
315 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, | 315 EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, |
316 ms_impl_->request_state()); | 316 ms_impl_->request_state()); |
317 } | 317 } |
318 | 318 |
319 // This test what happens if stop is called on a stream after the frame has | 319 // This test what happens if stop is called on a stream after the frame has |
320 // been reloaded. | 320 // been reloaded. |
321 TEST_F(MediaStreamImplTest, StopStreamAfterReload) { | 321 TEST_F(MediaStreamImplTest, StopStreamAfterReload) { |
322 WebKit::WebMediaStream mixed_desc = RequestLocalMediaStream(); | 322 blink::WebMediaStream mixed_desc = RequestLocalMediaStream(); |
323 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); | 323 EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); |
324 ms_impl_->FrameWillClose(NULL); | 324 ms_impl_->FrameWillClose(NULL); |
325 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 325 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
326 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 326 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
327 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); | 327 ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8()); |
328 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); | 328 EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
329 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); | 329 EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
330 } | 330 } |
331 | 331 |
332 } // namespace content | 332 } // namespace content |
OLD | NEW |