Adding platform specific variables for MediaCanPlayTypeTest

Vp9 codec is supported after KitKat (API level 19)
Expectation values are modifed in the test case based on the Android sdk version

HLS mime types are supported after Ice-cream sandwich (API level 14)
A check for identifying android version is added which decides whether the mime type should be added in the media_map_ or not.

Theora is not supported on Android. This check is also added in the "IsCodecSupportedOnAndroid".

MediaCanPlayType test are re-enabled on android.

BUG=357665

Review URL: https://codereview.chromium.org/230413003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269748 0039d316-1c4b-4281-b951-d872f2087c98
parent c6fb725b
......@@ -9,6 +9,10 @@
#include "content/public/test/content_browser_test_utils.h"
#include "content/shell/browser/shell.h"
#if defined(OS_ANDROID)
#include "base/android/build_info.h"
#endif
const char* kProbably = "probably";
const char* kMaybe = "maybe";
const char* kNot = "";
......@@ -28,9 +32,6 @@ const char* kOggVideoProbably = "probably";
const char* kOggVideoMaybe = "maybe";
const char* kTheoraProbably = "probably";
const char* kOpusProbably = "probably";
const char* kOpusProbablyElseMaybe = "probably";
const char* kHLSProbably = "";
const char* kHLSMaybe = "";
#if defined(USE_PROPRIETARY_CODECS)
const char* kTheoraAndPropProbably = "probably";
const char* kOpusAndPropProbably = "probably";
......@@ -41,13 +42,10 @@ const char* kOpusAndPropProbably = "";
#else
const char* kOggVideoProbably = "";
const char* kOggVideoMaybe = "";
const char* kTheoraProbably = "maybe";
const char* kTheoraProbably = "";
const char* kOpusProbably = "";
const char* kOpusProbablyElseMaybe = "maybe";
const char* kTheoraAndPropProbably = "maybe";
const char* kOpusAndPropProbably = "maybe";
const char* kHLSProbably = "probably";
const char* kHLSMaybe = "maybe";
#endif // !OS_ANDROID
namespace content {
......@@ -78,9 +76,6 @@ private:
DISALLOW_COPY_AND_ASSIGN(MediaCanPlayTypeTest);
};
// TODO(amogh.bihani): http://crbug.com/357665
#if !defined(OS_ANDROID)
IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_wav) {
EXPECT_EQ(kMaybe, CanPlay("'audio/wav'"));
EXPECT_EQ(kProbably, CanPlay("'audio/wav; codecs=\"1\"'"));
......@@ -142,6 +137,14 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_wav) {
}
IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) {
// On Android, VP9 is supported only on KitKat and above (API level 19).
std::string VP9Probably = "probably";
std::string VP9AndOpusProbably = "probably";
#if defined(OS_ANDROID)
VP9AndOpusProbably = "";
if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
VP9Probably = "";
#endif
EXPECT_EQ(kMaybe, CanPlay("'video/webm'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8\"'"));
......@@ -151,15 +154,16 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) {
EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8, opus\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8.0, opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9.0\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp9.0, opus\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'"));
EXPECT_EQ(VP9AndOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'"));
EXPECT_EQ(VP9AndOpusProbably,
CanPlay("'video/webm; codecs=\"vp9.0, opus\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8, vp9\"'"));
EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0, vp9.0\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8, vp9\"'"));
EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8.0, vp9.0\"'"));
EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, theora\"'"));
EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, avc1\"'"));
EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, avc3\"'"));
......@@ -274,9 +278,8 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) {
EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'"));
EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
EXPECT_EQ(kOpusProbablyElseMaybe, CanPlay("'audio/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kOpusProbablyElseMaybe,
CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, vorbis\"'"));
......@@ -307,13 +310,12 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) {
EXPECT_EQ(kMaybe, CanPlay("'application/ogg'"));
EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'"));
EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'"));
EXPECT_EQ(kOpusProbablyElseMaybe,
CanPlay("'application/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
EXPECT_EQ(kTheoraProbably,
CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));
EXPECT_EQ(kTheoraProbably,
CanPlay("'application/ogg; codecs=\"theora, opus\"'"));
EXPECT_EQ(kOpusProbablyElseMaybe,
EXPECT_EQ(kOpusProbably,
CanPlay("'application/ogg; codecs=\"opus, vorbis\"'"));
EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp8\"'"));
......@@ -498,6 +500,18 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) {
}
IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
// TODO(amogh.bihani): Change this expectation when bug 53193 is fixed.
std::string PropAndVP9Probably = "";
#if defined (OS_ANDROID)
if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
PropAndVP9Probably = "maybe";
else
PropAndVP9Probably = "probably";
#else
#if defined(USE_PROPRIETARY_CODECS)
PropAndVP9Probably = "probably";
#endif // USE_PROPRIETARY_CODECS
#endif // OS_ANDROID
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1\"'"));
......@@ -526,7 +540,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp8\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp9\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/mp4; codecs=\"vp9\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vorbis\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, vorbis\"'"));
......@@ -607,7 +621,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vp8\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vp9\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/x-m4v; codecs=\"vp9\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vorbis\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, vorbis\"'"));
......@@ -698,8 +712,8 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8.0\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp9\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp9.0\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9.0\"'"));
EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"opus\"'"));
EXPECT_EQ(kOpusAndPropProbably,
......@@ -774,8 +788,8 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8.0\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp9\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp9.0\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9\"'"));
EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9.0\"'"));
EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/x-m4a; codecs=\"opus\"'"));
EXPECT_EQ(kOpusAndPropProbably,
......@@ -820,214 +834,228 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
}
IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) {
EXPECT_EQ(kHLSMaybe, CanPlay("'application/x-mpegurl'"));
// HLS are supported only on Android IceCreamSandwich and above (API level 14)
std::string HLSProbably = "";
std::string HLSMaybe = "";
std::string HLSAndVP9Probably = "";
#if defined(OS_ANDROID)
int sdk = base::android::BuildInfo::GetInstance()->sdk_int();
if (sdk > 13) {
HLSProbably = "probably";
HLSMaybe = "maybe";
if (sdk < 19)
HLSAndVP9Probably = "maybe";
else
HLSAndVP9Probably = "probably";
}
#endif
EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, mp4a.40.5\"'"));
// TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
// http://crbug.com/53193 ----------------------------------------------------
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1.unknown\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3.unknown\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"mp4a.unknown\"'"));
EXPECT_EQ(kHLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc1.\"'"));
EXPECT_EQ(kHLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc3.\"'"));
EXPECT_EQ(kHLSProbably, CanPlay("'application/x-mpegurl; codecs=\"mp4a.\"'"));
EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc1.\"'"));
EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc3.\"'"));
EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"mp4a.\"'"));
EXPECT_EQ(kHLSProbably, CanPlay("'application/x-mpegurl; codecs=\"vp8\"'"));
EXPECT_EQ(kHLSProbably, CanPlay("'application/x-mpegurl; codecs=\"vp9\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"vp8\"'"));
EXPECT_EQ(HLSAndVP9Probably,
CanPlay("'application/x-mpegurl; codecs=\"vp9\"'"));
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
EXPECT_EQ(kHLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"opus\"'"));
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"vp8, opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"vp9, opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"theora\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"theora, vorbis\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a.40.2\"'"));
EXPECT_EQ(kHLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC1\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC1\"'"));
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"AVC1.4d401e\"'"));
EXPECT_EQ(kHLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC3\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC3\"'"));
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"AVC3.64001f\"'"));
EXPECT_EQ(kHLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"MP4A\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"MP4A\"'"));
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"MP4A.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"AVC1, MP4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"AVC3, MP4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\", AVC3.64001F, MP4.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"avc2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"avc4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"avc1x\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"avc3x\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"mp4ax\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/x-mpegurl; codecs=\"unknown\"'"));
// ---------------------------------------------------------------------------
EXPECT_EQ(kHLSMaybe, CanPlay("'application/vnd.apple.mpegurl'"));
EXPECT_EQ(HLSMaybe, CanPlay("'application/vnd.apple.mpegurl'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40.2\"'"));
// TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
// http://crbug.com/53193 ----------------------------------------------------
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.unknown\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.unknown\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.unknown\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSAndVP9Probably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
EXPECT_EQ(kHLSProbably,
EXPECT_EQ(HLSProbably,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8, opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9, opus\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, vorbis\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1.4d401e\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3.64001f\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1, MP4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3, MP4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; "
"codecs=\", AVC1.4D401E, MP4.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; "
"codecs=\", AVC3.64001F, MP4.40.2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc2\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc4\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1x\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3x\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4ax\"'"));
EXPECT_EQ(kHLSMaybe,
EXPECT_EQ(HLSMaybe,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"unknown\"'"));
// ---------------------------------------------------------------------------
}
#endif // !OS_ANDROID
} // namespace content
......@@ -413,6 +413,10 @@ static const char* const supported_javascript_types[] = {
#if defined(OS_ANDROID)
static bool IsCodecSupportedOnAndroid(const std::string& codec) {
// Theora is not supported in Android
if (!codec.compare("theora"))
return false;
// VP9 is supported only in KitKat+ (API Level 19).
if ((!codec.compare("vp9") || !codec.compare("vp9.0")) &&
base::android::BuildInfo::GetInstance()->sdk_int() < 19) {
......@@ -426,6 +430,16 @@ static bool IsCodecSupportedOnAndroid(const std::string& codec) {
}
return true;
}
static bool IsMimeTypeSupportedOnAndroid(const std::string& mimeType) {
// HLS codecs are supported in ICS and above (API level 14)
if ((!mimeType.compare("application/vnd.apple.mpegurl") ||
!mimeType.compare("application/x-mpegurl")) &&
base::android::BuildInfo::GetInstance()->sdk_int() < 14) {
return false;
}
return true;
}
#endif
struct MediaFormatStrict {
......@@ -476,16 +490,26 @@ void MimeUtil::InitializeMimeTypeMaps() {
unsupported_text_map_.insert(unsupported_text_types[i]);
for (size_t i = 0; i < arraysize(supported_javascript_types); ++i)
non_image_map_.insert(supported_javascript_types[i]);
for (size_t i = 0; i < arraysize(common_media_types); ++i)
for (size_t i = 0; i < arraysize(common_media_types); ++i) {
#if defined(OS_ANDROID)
if (!IsMimeTypeSupportedOnAndroid(common_media_types[i]))
continue;
#endif
non_image_map_.insert(common_media_types[i]);
}
#if defined(USE_PROPRIETARY_CODECS)
for (size_t i = 0; i < arraysize(proprietary_media_types); ++i)
non_image_map_.insert(proprietary_media_types[i]);
#endif
// Initialize the supported media types.
for (size_t i = 0; i < arraysize(common_media_types); ++i)
for (size_t i = 0; i < arraysize(common_media_types); ++i) {
#if defined(OS_ANDROID)
if (!IsMimeTypeSupportedOnAndroid(common_media_types[i]))
continue;
#endif
media_map_.insert(common_media_types[i]);
}
#if defined(USE_PROPRIETARY_CODECS)
for (size_t i = 0; i < arraysize(proprietary_media_types); ++i)
media_map_.insert(proprietary_media_types[i]);
......
......@@ -8,6 +8,10 @@
#include "net/base/mime_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#if defined(OS_ANDROID)
#include "base/android/build_info.h"
#endif
namespace net {
TEST(MimeUtilTest, ExtensionTest) {
......@@ -189,6 +193,60 @@ TEST(MimeUtilTest, MatchesMimeType) {
EXPECT_TRUE(MatchesMimeType("ab/*cd", "ab/xxxcd"));
}
TEST(MimeUtilTest, CommonMediaMimeType) {
#if defined(OS_ANDROID)
bool HLSSupported;
if (base::android::BuildInfo::GetInstance()->sdk_int() < 14)
HLSSupported = false;
else
HLSSupported = true;
#endif
EXPECT_TRUE(IsSupportedMediaMimeType("audio/webm"));
EXPECT_TRUE(IsSupportedMediaMimeType("video/webm"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/wav"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-wav"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/ogg"));
EXPECT_TRUE(IsSupportedMediaMimeType("application/ogg"));
#if defined(OS_ANDROID)
EXPECT_FALSE(IsSupportedMediaMimeType("video/ogg"));
EXPECT_EQ(HLSSupported, IsSupportedMediaMimeType("application/x-mpegurl"));
EXPECT_EQ(HLSSupported,
IsSupportedMediaMimeType("application/vnd.apple.mpegurl"));
#else
EXPECT_TRUE(IsSupportedMediaMimeType("video/ogg"));
EXPECT_FALSE(IsSupportedMediaMimeType("application/x-mpegurl"));
EXPECT_FALSE(IsSupportedMediaMimeType("application/vnd.apple.mpegurl"));
#endif // OS_ANDROID
#if defined(USE_PROPRIETARY_CODECS)
EXPECT_TRUE(IsSupportedMediaMimeType("audio/mp4"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-m4a"));
EXPECT_TRUE(IsSupportedMediaMimeType("video/mp4"));
EXPECT_TRUE(IsSupportedMediaMimeType("video/x-m4v"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/mp3"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-mp3"));
EXPECT_TRUE(IsSupportedMediaMimeType("audio/mpeg"));
#else
EXPECT_FALSE(IsSupportedMediaMimeType("audio/mp4"));
EXPECT_FALSE(IsSupportedMediaMimeType("audio/x-m4a"));
EXPECT_FALSE(IsSupportedMediaMimeType("video/mp4"));
EXPECT_FALSE(IsSupportedMediaMimeType("video/x-m4v"));
EXPECT_FALSE(IsSupportedMediaMimeType("audio/mp3"));
EXPECT_FALSE(IsSupportedMediaMimeType("audio/x-mp3"));
EXPECT_FALSE(IsSupportedMediaMimeType("audio/mpeg"));
#endif // USE_PROPRIETARY_CODECS
EXPECT_FALSE(IsSupportedMediaMimeType("video/mp3"));
EXPECT_FALSE(IsSupportedMediaMimeType("video/unknown"));
EXPECT_FALSE(IsSupportedMediaMimeType("audio/unknown"));
EXPECT_FALSE(IsSupportedMediaMimeType("unknown/unknown"));
}
// Note: codecs should only be a list of 2 or fewer; hence the restriction of
// results' length to 2.
TEST(MimeUtilTest, ParseCodecString) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment