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

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

Issue 218763007: Update MediaStreamTrack::Stop to latest draft. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Self review. Created 6 years, 9 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_impl_unittest.cc
diff --git a/content/renderer/media/media_stream_impl_unittest.cc b/content/renderer/media/media_stream_impl_unittest.cc
index 16b464b6a12b16e16f7b91da3bb411ac1c49fff7..b95a689c1a459262cee6ef2c775b3731f168d7ae 100644
--- a/content/renderer/media/media_stream_impl_unittest.cc
+++ b/content/renderer/media/media_stream_impl_unittest.cc
@@ -6,6 +6,7 @@
#include "base/strings/utf_string_conversions.h"
#include "content/renderer/media/media_stream.h"
#include "content/renderer/media/media_stream_impl.h"
+#include "content/renderer/media/media_stream_track.h"
#include "content/renderer/media/mock_media_stream_dependency_factory.h"
#include "content/renderer/media/mock_media_stream_dispatcher.h"
#include "content/renderer/media/mock_media_stream_video_source.h"
@@ -43,6 +44,7 @@ class MediaStreamImplUnderTest : public MediaStreamImpl {
MediaStreamDependencyFactory* dependency_factory)
: MediaStreamImpl(NULL, media_stream_dispatcher, dependency_factory),
state_(REQUEST_NOT_STARTED),
+ result_(NUM_MEDIA_REQUEST_RESULTS),
factory_(dependency_factory),
video_source_(NULL) {
}
@@ -53,18 +55,19 @@ class MediaStreamImplUnderTest : public MediaStreamImpl {
requestUserMedia(user_media_request);
}
- virtual void CompleteGetUserMediaRequest(
+ virtual void GetUserMediaRequestSucceeded(
const blink::WebMediaStream& stream,
- blink::WebUserMediaRequest* request_info,
- content::MediaStreamRequestResult result) OVERRIDE {
+ blink::WebUserMediaRequest* request_info) OVERRIDE {
last_generated_stream_ = stream;
- result_ = result;
- state_ = (result == MEDIA_DEVICE_OK ? REQUEST_SUCCEEDED : REQUEST_FAILED);
+ state_ = REQUEST_SUCCEEDED;
}
- virtual blink::WebMediaStream GetMediaStream(
- const GURL& url) OVERRIDE {
- return last_generated_stream_;
+ virtual void GetUserMediaRequestFailed(
+ blink::WebUserMediaRequest* request_info,
+ content::MediaStreamRequestResult result) OVERRIDE {
+ last_generated_stream_.reset();
+ state_ = REQUEST_FAILED;
+ result_ = result;
}
virtual MediaStreamVideoSource* CreateVideoSource(
@@ -76,13 +79,16 @@ class MediaStreamImplUnderTest : public MediaStreamImpl {
return video_source_;
}
- using MediaStreamImpl::OnLocalMediaStreamStop;
using MediaStreamImpl::OnLocalSourceStopped;
const blink::WebMediaStream& last_generated_stream() {
return last_generated_stream_;
}
+ void ClearLastGeneratedStream() {
+ last_generated_stream_.reset();
+ }
+
MockMediaStreamVideoCapturerSource* last_created_video_source() const {
return video_source_;
}
@@ -224,51 +230,65 @@ TEST_F(MediaStreamImplTest, GenerateTwoMediaStreamsWithDifferentSources) {
desc2_audio_tracks[0].source().extraData());
}
-TEST_F(MediaStreamImplTest, StopLocalMediaStream) {
+TEST_F(MediaStreamImplTest, StopLocalTracks) {
no longer working on chromium 2014/04/01 18:29:58 does any of the test cases verify that the source
perkj_chrome 2014/04/02 13:35:49 These tests verify that the ms_dispatcher is notif
// Generate a stream with both audio and video.
blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
- // Stop generated local streams.
- ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8());
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
+ mixed_desc.audioTracks(audio_tracks);
+ MediaStreamTrack* audio_track = MediaStreamTrack::GetTrack(audio_tracks[0]);
+ audio_track->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
+
+ blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
+ mixed_desc.videoTracks(video_tracks);
+ MediaStreamTrack* video_track = MediaStreamTrack::GetTrack(video_tracks[0]);
+ video_track->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
}
-// This test that a source is not stopped even if the MediaStream is stopped if
-// there are two MediaStreams using the same device. The source is stopped
-// if there are no more MediaStreams using the device.
-TEST_F(MediaStreamImplTest, StopLocalMediaStreamWhenTwoStreamUseSameDevices) {
+// This test that a source is not stopped even if the tracks in a
+// MediaStream is stopped if there are two MediaStreams with tracks using the
+// same device. The source is stopped
+// if there are no more MediaStream tracks using the device.
+TEST_F(MediaStreamImplTest, StopLocalTracksWhenTwoStreamUseSameDevices) {
// Generate a stream with both audio and video.
blink::WebMediaStream desc1 = RequestLocalMediaStream();
blink::WebMediaStream desc2 = RequestLocalMediaStream();
- ms_impl_->OnLocalMediaStreamStop(desc2.id().utf8());
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks1;
+ desc1.audioTracks(audio_tracks1);
+ MediaStreamTrack* audio_track1 = MediaStreamTrack::GetTrack(audio_tracks1[0]);
+ audio_track1->StopTrack();
EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
- EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
- ms_impl_->OnLocalMediaStreamStop(desc1.id().utf8());
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks2;
+ desc2.audioTracks(audio_tracks2);
+ MediaStreamTrack* audio_track2 = MediaStreamTrack::GetTrack(audio_tracks2[0]);
+ audio_track2->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
+
+ blink::WebVector<blink::WebMediaStreamTrack> video_tracks1;
+ desc1.videoTracks(video_tracks1);
+ MediaStreamTrack* video_track1 = MediaStreamTrack::GetTrack(video_tracks1[0]);
+ video_track1->StopTrack();
+ EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
+
+ blink::WebVector<blink::WebMediaStreamTrack> video_tracks2;
+ desc2.videoTracks(video_tracks2);
+ MediaStreamTrack* video_track2 = MediaStreamTrack::GetTrack(video_tracks2[0]);
+ video_track2->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
}
-// Test that the source is stopped even if there are two MediaStreams using
-// the same source.
-TEST_F(MediaStreamImplTest, StopSource) {
+TEST_F(MediaStreamImplTest, StopSourceWhenMediaStreamGoesOutOfScope) {
// Generate a stream with both audio and video.
- blink::WebMediaStream desc1 = RequestLocalMediaStream();
- blink::WebMediaStream desc2 = RequestLocalMediaStream();
+ RequestLocalMediaStream();
+ // Makes sure the test itself don't hold a reference to the created
+ // MediaStream.
+ ms_impl_->ClearLastGeneratedStream();
- // Stop the video source.
- blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
- desc1.videoTracks(video_tracks);
- ms_impl_->OnLocalSourceStopped(video_tracks[0].source());
- EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
- EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
-
- // Stop the audio source.
- blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
- desc1.audioTracks(audio_tracks);
- ms_impl_->OnLocalSourceStopped(audio_tracks[0].source());
+ // Expect the sources to be stopped when the MediaStream goes out of scope.
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
}
@@ -278,6 +298,7 @@ TEST_F(MediaStreamImplTest, StopSource) {
TEST_F(MediaStreamImplTest, FrameWillClose) {
// Test a stream with both audio and video.
blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
+ blink::WebMediaStream desc2 = RequestLocalMediaStream();
// Test that the MediaStreams are deleted if the owning WebFrame is deleted.
// In the unit test the owning frame is NULL.
@@ -300,22 +321,15 @@ TEST_F(MediaStreamImplTest, MediaSourceFailToStart) {
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
}
-// This test what happens if MediaStreamImpl is deleted while the sources of a
-// MediaStream is being started.
+// This test what happens if MediaStreamImpl is deleted before a source has
+// started.
TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) {
ms_impl_->RequestUserMedia();
FakeMediaStreamDispatcherComplete();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE,
ms_impl_->request_state());
-
- MockMediaStreamVideoCapturerSource* video_source =
- ms_impl_->last_created_video_source();
- // Hold on to a blink reference to the source to guarantee that its not
- // deleted when MediaStreamImpl is deleted.
- blink::WebMediaStreamSource blink_source = video_source->owner();
ms_impl_.reset();
- video_source->StartMockedSource();
}
// This test what happens if the WebFrame is closed while the MediaStream is
@@ -343,16 +357,25 @@ TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) {
ms_impl_->request_state());
}
-// This test what happens if stop is called on a stream after the frame has
+// This test what happens if stop is called on a track after the frame has
// been reloaded.
-TEST_F(MediaStreamImplTest, StopStreamAfterReload) {
+TEST_F(MediaStreamImplTest, StopTrackAfterReload) {
blink::WebMediaStream mixed_desc = RequestLocalMediaStream();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
ms_impl_->FrameWillClose(NULL);
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
- ms_impl_->OnLocalMediaStreamStop(mixed_desc.id().utf8());
+
+ blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
+ mixed_desc.audioTracks(audio_tracks);
+ MediaStreamTrack* audio_track = MediaStreamTrack::GetTrack(audio_tracks[0]);
+ audio_track->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
+
+ blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
+ mixed_desc.videoTracks(video_tracks);
+ MediaStreamTrack* video_track = MediaStreamTrack::GetTrack(video_tracks[0]);
+ video_track->StopTrack();
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
}

Powered by Google App Engine
This is Rietveld 408576698