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 |