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