Index: content/renderer/media/media_recorder_handler_unittest.cc |
diff --git a/content/renderer/media/media_recorder_handler_unittest.cc b/content/renderer/media/media_recorder_handler_unittest.cc |
index 57fb60d02da9fef49b7c6d02053c52da3d8d2b72..44d1296ff664ea24d956f8c67d46a78079496456 100644 |
--- a/content/renderer/media/media_recorder_handler_unittest.cc |
+++ b/content/renderer/media/media_recorder_handler_unittest.cc |
@@ -44,16 +44,19 @@ struct MediaRecorderTestParams { |
const bool has_video; |
const bool has_audio; |
const char* const mime_type; |
+ const char* const codecs; |
const size_t first_encoded_video_frame_size; |
const size_t second_encoded_video_frame_size; |
const size_t first_encoded_audio_frame_size; |
const size_t second_encoded_audio_frame_size; |
}; |
+// Array of valid combinations of video/audio/codecs and expected collected |
+// encoded sizes to use for parameterizing MediaRecorderHandlerTest. |
static const MediaRecorderTestParams kMediaRecorderTestParams[] = { |
- {true, false, "video/vp8", 52, 32, 0, 0}, |
- {true, false, "video/vp9", 33, 18, 0, 0}, |
- {false, true, "video/vp8", 0, 0, 990, 706}}; |
+ {true, false, "video/webm", "vp8", 52, 32, 0, 0}, |
+ {true, false, "video/webm", "vp9", 33, 18, 0, 0}, |
+ {false, true, "video/webm", "vp8", 0, 0, 990, 706}}; |
class MediaRecorderHandlerTest : public TestWithParam<MediaRecorderTestParams>, |
public blink::WebMediaRecorderHandlerClient { |
@@ -130,38 +133,57 @@ class MediaRecorderHandlerTest : public TestWithParam<MediaRecorderTestParams>, |
DISALLOW_COPY_AND_ASSIGN(MediaRecorderHandlerTest); |
}; |
-// Checks that canSupportMimeType() works as expected. |
-// TODO(mcasas): revisit this when canSupportMimeType() is fully implemented. |
+// Checks that canSupportMimeType() works as expected, by sending supported |
+// combinations and unsupported ones. |
TEST_F(MediaRecorderHandlerTest, CanSupportMimeType) { |
- const WebString good_mime_type_vp8(base::UTF8ToUTF16("video/vp8")); |
- EXPECT_TRUE(media_recorder_handler_->canSupportMimeType(good_mime_type_vp8)); |
- |
- const WebString good_mime_type_vp9(base::UTF8ToUTF16("video/vp9")); |
- EXPECT_TRUE(media_recorder_handler_->canSupportMimeType(good_mime_type_vp9)); |
- |
- const WebString audio_mime_type(base::UTF8ToUTF16("audio/opus")); |
- EXPECT_TRUE(media_recorder_handler_->canSupportMimeType(audio_mime_type)); |
- |
- const WebString combo_mime_type(base::UTF8ToUTF16("video/vp8, audio/opus")); |
- EXPECT_TRUE(media_recorder_handler_->canSupportMimeType(combo_mime_type)); |
- |
- const WebString bad_combo(base::UTF8ToUTF16("video/vp8, audio/unsupported")); |
- EXPECT_FALSE(media_recorder_handler_->canSupportMimeType(bad_combo)); |
- |
- const WebString bad_mime_type(base::UTF8ToUTF16("video/unsupportedcodec")); |
- EXPECT_FALSE(media_recorder_handler_->canSupportMimeType(bad_mime_type)); |
- |
- const WebString empty_mime_type(base::UTF8ToUTF16("")); |
- EXPECT_TRUE(media_recorder_handler_->canSupportMimeType(empty_mime_type)); |
+ const WebString unsupported_mime_type(base::UTF8ToUTF16("video/mpeg")); |
+ EXPECT_FALSE(media_recorder_handler_->canSupportMimeType( |
+ unsupported_mime_type, WebString())); |
+ |
+ const WebString mime_type_video(base::UTF8ToUTF16("video/webm")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video, WebString())); |
+ const WebString mime_type_video_uppercase(base::UTF8ToUTF16("video/WEBM")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video_uppercase, WebString())); |
+ const WebString example_good_codecs_1(base::UTF8ToUTF16("vp8")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video, example_good_codecs_1)); |
+ const WebString example_good_codecs_2(base::UTF8ToUTF16("vp9,opus")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video, example_good_codecs_2)); |
+ const WebString example_good_codecs_3(base::UTF8ToUTF16("VP9,opus")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video, example_good_codecs_3)); |
+ |
+ const WebString example_unsupported_codecs_1(base::UTF8ToUTF16("daala")); |
+ EXPECT_FALSE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_video, example_unsupported_codecs_1)); |
+ |
+ const WebString mime_type_audio(base::UTF8ToUTF16("audio/webm")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_audio, WebString())); |
+ const WebString example_good_codecs_4(base::UTF8ToUTF16("opus")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_audio, example_good_codecs_4)); |
+ const WebString example_good_codecs_5(base::UTF8ToUTF16("OpUs")); |
+ EXPECT_TRUE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_audio, example_good_codecs_5)); |
+ |
+ const WebString example_unsupported_codecs_2(base::UTF8ToUTF16("vorbis")); |
+ EXPECT_FALSE(media_recorder_handler_->canSupportMimeType( |
+ mime_type_audio, example_unsupported_codecs_2)); |
} |
// Checks that the initialization-destruction sequence works fine. |
TEST_P(MediaRecorderHandlerTest, InitializeStartStop) { |
AddTracks(); |
const WebString mime_type(base::UTF8ToUTF16(GetParam().mime_type)); |
+ const WebString codecs(base::UTF8ToUTF16(GetParam().codecs)); |
EXPECT_TRUE(media_recorder_handler_->initialize(this, |
registry_.test_stream(), |
- mime_type)); |
+ mime_type, |
+ codecs)); |
EXPECT_FALSE(recording()); |
EXPECT_FALSE(hasVideoRecorders()); |
EXPECT_FALSE(hasAudioRecorders()); |
@@ -191,8 +213,9 @@ TEST_P(MediaRecorderHandlerTest, EncodeVideoFrames) { |
AddTracks(); |
const WebString mime_type(base::UTF8ToUTF16(GetParam().mime_type)); |
+ const WebString codecs(base::UTF8ToUTF16(GetParam().codecs)); |
EXPECT_TRUE(media_recorder_handler_->initialize(this, registry_.test_stream(), |
- mime_type)); |
+ mime_type, codecs)); |
EXPECT_TRUE(media_recorder_handler_->start()); |
InSequence s; |
@@ -250,9 +273,9 @@ TEST_P(MediaRecorderHandlerTest, EncodeAudioFrames) { |
AddTracks(); |
- const WebString mime_type(base::UTF8ToUTF16("audio/opus")); |
+ const WebString mime_type(base::UTF8ToUTF16("audio/webm")); |
EXPECT_TRUE(media_recorder_handler_->initialize(this, registry_.test_stream(), |
- mime_type)); |
+ mime_type, WebString())); |
EXPECT_TRUE(media_recorder_handler_->start()); |
InSequence s; |