Chromium Code Reviews| Index: content/browser/media/media_canplaytype_browsertest.cc |
| diff --git a/content/browser/media/media_canplaytype_browsertest.cc b/content/browser/media/media_canplaytype_browsertest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..79e2aae12aff1278407caa9cf8e1b24333f017a6 |
| --- /dev/null |
| +++ b/content/browser/media/media_canplaytype_browsertest.cc |
| @@ -0,0 +1,305 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include <string> |
| + |
| +#include "content/browser/media/media_browsertest.h" |
| +#include "content/public/test/browser_test_utils.h" |
| +#include "content/shell/browser/shell.h" |
| + |
| +const char* kProbablySupported = "probably"; |
| +const char* kMaybeSupported = "maybe"; |
| +const char* kNotSupported = ""; |
| +#if defined(USE_PROPRIETARY_CODECS) |
|
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable.
amogh.bihani
2014/03/19 13:22:17
Done.
|
| +const char* kProprietaryProbablySupported = "probably"; |
| +const char* kProprietaryMaybeSupported = "maybe"; |
| +const char* kProprietaryProbablyElseMaybeSupported = "probably"; |
| +#else |
| +const char* kProprietaryProbablySupported = ""; |
| +const char* kProprietaryMaybeSupported = ""; |
| +const char* kProprietaryProbablyElseMaybeSupported = "maybe"; |
| +#endif // USE_PROPRIETARY_CODECS |
| +// TODO(amogh.bihani): Change the opus tests when opus is supported on |
|
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable
amogh.bihani
2014/03/19 13:22:17
Done.
|
| +// Android. (http://crbug.com/318436). |
| +#if !defined(OS_ANDROID) |
| +const char* kTheoraProbablySupported = "probably"; |
| +const char* kOpusProbablySupported = "probably"; |
| +const char* kTheoraMaybeSupported = "maybe"; |
|
ddorwin
2014/03/18 17:58:02
keep the Theora's together.
amogh.bihani
2014/03/19 13:22:17
Done.
|
| +#if defined(USE_PROPRIETARY_CODECS) |
| +const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "probably"; |
| +const char* kTheoraAndProprietaryProbablySupported = "probably"; |
| +const char* kOpusAndProprietaryProbablySupported = "probably"; |
| +#else |
| +const char* kTheoraAndProprietaryProbablySupported = ""; |
| +const char* kOpusAndProprietaryProbablySupported = ""; |
| +const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "maybe"; |
|
ddorwin
2014/03/18 17:58:02
This is a different order than above.
amogh.bihani
2014/03/19 13:22:17
Done.
|
| +#endif // USE_PROPRIETARY_CODECS |
| +#else |
| +const char* kTheoraProbablySupported = ""; |
| +const char* kOpusProbablySupported = ""; |
| +const char* kTheoraMaybeSupported = ""; |
| +const char* kOpusAndProprietaryProbablySupported = ""; |
| +const char* kTheoraAndProprietaryProbablySupported = ""; |
| +const char* kTheoraAndProprietaryProbablyElseMaybeSupported = ""; |
|
ddorwin
2014/03/18 17:58:02
Order
amogh.bihani
2014/03/19 13:22:17
Done.
|
| +#endif // !OS_ANDROID |
| + |
| +namespace content { |
| + |
| +class MediaMimeCanPlayTypeTest : public MediaBrowserTest { |
| +protected: |
| + MediaMimeCanPlayTypeTest() { } |
| + ~MediaMimeCanPlayTypeTest() { } |
| + |
| + std::string CanPlayTypeTest(const std::string& commandString) { |
| + std::string command("document.createElement('video').canPlayType("); |
| + command.append(commandString); |
| + command.append(")"); |
| + |
| + std::string result; |
| + EXPECT_TRUE(ExecuteScriptAndExtractString( |
| + test_shell_->web_contents(), |
| + "window.domAutomationController.send(" + command + ");", |
| + &result)); |
| + return result; |
| + } |
| + |
| + void SetUpShell() { |
|
ddorwin
2014/03/18 17:58:02
No, if you use SetUp(), it will automatically be c
amogh.bihani
2014/03/19 13:22:17
Yes, I had tried that but that still gives runtime
ddorwin
2014/03/19 23:28:14
Somehow, a Shell must have already been created ([
|
| + test_shell_ = CreateBrowser(); |
| + } |
| + |
| + void TearDownShell() { |
| + test_shell_->Close(); |
| + } |
| +private: |
| + Shell* test_shell_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MediaMimeCanPlayTypeTest); |
| +}; |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_wav) { |
| + SetUpShell(); |
| + EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/wav'")); |
| + EXPECT_EQ(kProbablySupported, CanPlayTypeTest("'audio/wav; codecs=\"1\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"theora\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp9\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"opus\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/wav; codecs=\"mp4a.40.5\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/wav; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"garbage\"'")); |
| + TearDownShell(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_webm) { |
| + SetUpShell(); |
| + // video/webm |
| + EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'video/webm'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp8, vorbis\"'")); |
| + EXPECT_EQ(kOpusProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp8, opus\"'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp9\"'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp9, vorbis\"'")); |
| + EXPECT_EQ(kOpusProbablySupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp9, opus\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"vp9, 1\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"vp8, mp4a.40.2\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"theora\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"1\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'video/webm; codecs=\"mp4a.40.2\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"garbage\"'")); |
| + // audio/webm |
| + EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/webm'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kOpusProbablySupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"opus\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"1\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp9\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"vp9, opus\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"vp9, vorbis\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kNotSupported, |
| + CanPlayTypeTest("'audio/webm; codecs=\"mp4a.40.2\"'")); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"garbage\"'")); |
| + TearDownShell(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_ogg) { |
| + SetUpShell(); |
| + // video/ogg |
| + EXPECT_EQ(kTheoraMaybeSupported, CanPlayTypeTest("'video/ogg'")); |
| + EXPECT_EQ(kTheoraProbablySupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"theora\"'")); |
| + EXPECT_EQ(kTheoraProbablySupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"theora, vorbis\"'")); |
| + EXPECT_EQ(kTheoraProbablySupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"theora, opus\"'")); |
| + EXPECT_EQ(kTheoraProbablySupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"mp4a\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc1, mp4a\"'")); |
| + EXPECT_EQ(kTheoraMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kTheoraMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F\"'")); |
| + EXPECT_EQ(kTheoraMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"mp4a.4.02\"'")); |
| + EXPECT_EQ(kTheoraMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'")); |
| + EXPECT_EQ(kTheoraMaybeSupported, |
| + CanPlayTypeTest("'video/ogg; codecs=\"garbage\"'")); |
| + // audio/ogg |
| + EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/ogg'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kTheoraProbablySupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"theora\"'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"vp8.0\"'")); |
| + EXPECT_EQ(kProbablySupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"vp9.0\"'")); |
| + EXPECT_EQ(kOpusProbablySupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"opus\"'")); |
| + EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, |
|
ddorwin
2014/03/18 17:58:02
OOC, is this something that will be fixed in your
amogh.bihani
2014/03/19 13:22:17
Yes. :)
|
| + CanPlayTypeTest("'audio/ogg; codecs=\"mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"mp4a.40.2\"'")); |
| + EXPECT_EQ(kMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"avc3.64001F\"'")); |
| + EXPECT_EQ(kMaybeSupported, |
| + CanPlayTypeTest("'audio/ogg; codecs=\"garbage\"'")); |
| + TearDownShell(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_mpeg) { |
| + SetUpShell(); |
| + EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/mp3'")); |
| + // video/mp4 |
| + EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'video/mp4'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"garbage\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"opus\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"theora\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"vp9, opus\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"theora, vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"theora, mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'video/mp4; codecs=\"avc1, vorbis\"'")); |
| + // audio/mpeg |
| + EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mpeg'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"opus\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"theora\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mpeg; codecs=\"vp8\"'")); |
| + // audio/mp3 |
| + EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp3'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"opus\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"theora\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp3; codecs=\"vp8\"'")); |
| + // audio/mp4 |
| + EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp4'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"mp4a\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"mp4a.40.2\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"avc1\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"avc3\"'")); |
| + EXPECT_EQ(kProprietaryMaybeSupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"avc1.4D401E\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"opus\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"theora\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"vp8\"'")); |
| + EXPECT_EQ(kOpusAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"vp9, opus\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"theora, vorbis\"'")); |
| + EXPECT_EQ(kTheoraAndProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"theora, mp4a\"'")); |
| + EXPECT_EQ(kProprietaryProbablySupported, |
| + CanPlayTypeTest("'audio/mp4; codecs=\"avc1, vorbis\"'")); |
| + TearDownShell(); |
| +} |
| + |
| +} // namespace content |