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

Unified Diff: content/browser/media/media_canplaytype_browsertest.cc

Issue 186973003: Add browser tests for canPlayType() results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing comments 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
« no previous file with comments | « no previous file | content/content_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698