1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file. 4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include <string> 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/browser/media/media_browsertest.h" 8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/public/test/browser_test_utils.h" 9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/public/test/content_browser_test_utils.h" 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/shell/browser/shell.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/android/build_info.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kProbably[] = "probably"; 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kMaybe[] = "maybe"; 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kNot[] = ""; 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(USE_PROPRIETARY_CODECS) 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kPropProbably[] = "probably"; 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kPropMaybe[] = "maybe"; 23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#else 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kPropProbably[] = ""; 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kPropMaybe[] = ""; 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // USE_PROPRIETARY_CODECS 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// TODO(amogh.bihani): Change the opus tests when opus is on 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Android. (http://crbug.com/318436). 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if !defined(OS_ANDROID) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOggVideoProbably[] = "probably"; 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOggVideoMaybe[] = "maybe"; 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kTheoraProbably[] = "probably"; 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOpusProbably[] = "probably"; 35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#else 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOggVideoProbably[] = ""; 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOggVideoMaybe[] = ""; 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kTheoraProbably[] = ""; 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const char kOpusProbably[] = ""; 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // !OS_ANDROID 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace content { 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass MediaCanPlayTypeTest : public MediaBrowserTest { 45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochpublic: 46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch MediaCanPlayTypeTest() : url_("about:blank") { } 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void SetUpOnMainThread() OVERRIDE { 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NavigateToURL(shell(), url_); 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string CanPlay(const std::string& type) { 53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string command("document.createElement('video').canPlayType("); 54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch command.append(type); 55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch command.append(")"); 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string result; 58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_TRUE(ExecuteScriptAndExtractString( 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shell()->web_contents(), 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "window.domAutomationController.send(" + command + ");", 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch &result)); 62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return result; 63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void TestMPEGUnacceptableCombinations(std::string mime) { 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs must be followed by valid hexadecimal number. 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.unknown\"'")); 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.unknown\"'")); 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.unknown\"'")); 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs must not end with a dot. 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.\"'")); 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.\"'")); 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a\"'")); 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'")); 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'")); 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs not belonging to MPEG container. 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, vorbis\"'")); 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, vorbis\"'")); 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, opus\"'")); 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, opus\"'")); 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8\"'")); 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9\"'")); 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, mp4a.40\"'")); 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, mp4a.40\"'")); 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, mp4a.40.2\"'")); 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, mp4a.40.2\"'")); 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"1\"'")); 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, 1\"'")); 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, 1\"'")); 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, 1\"'")); 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, 1\"'")); 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'")); 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, mp4a\"'")); 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, mp4a.40.2\"'")); 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs are case sensitive. 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC1\"'")); 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC1.4d401e\"'")); 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC3\"'")); 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC3.64001f\"'")); 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"MP4A\"'")); 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"MP4A.40.2\"'")); 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC1, MP4\"'")); 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AVC3, MP4\"'")); 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CanPlay("'" + mime + "; codecs=\", AVC1.4D401E, MP4.40.2\"'")); 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CanPlay("'" + mime + "; codecs=\", AVC3.64001F, MP4.40.2\"'")); 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Unknown codecs. 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void TestOGGUnacceptableCombinations(std::string mime) { 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs not belonging to OGG container. 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0\"'")); 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, opus\"'")); 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, vorbis\"'")); 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.2\"'")); 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'")); 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs are case sensitive. 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"Theora\"'")); 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"Opus\"'")); 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"Vorbis\"'")); 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"Theora, Opus\"'")); 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"Theora, Vorbis\"'")); 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Unknown codecs. 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"unknown\"'")); 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void TestWEBMUnacceptableCombinations(std::string mime) { 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs not belonging to WEBM container. 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'")); 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, 1\"'")); 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, 1\"'")); 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0, 1\"'")); 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0, 1\"'")); 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora\"'")); 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, vorbis\"'")); 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, opus\"'")); 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, mp4a.40\"'")); 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, mp4a.40\"'")); 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0, mp4a.40\"'")); 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0, mp4a.40\"'")); 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs are case sensitive. 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP8, Vorbis\"'")); 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP8.0, Opus\"'")); 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP9, Vorbis\"'")); 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP9.0, Opus\"'")); 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Unknown codec. 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"unknown\"'")); 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void TestWAVUnacceptableCombinations(std::string mime) { 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Codecs not belonging to WAV container. 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0, 1\"'")); 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0, 1\"'")); 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vorbis\"'")); 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"opus\"'")); 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora\"'")); 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, 1\"'")); 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, 1\"'")); 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Unknown codec. 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"unknown\"'")); 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 236effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochprivate: 237effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch GURL url_; 238effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DISALLOW_COPY_AND_ASSIGN(MediaCanPlayTypeTest); 239effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}; 240effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 241effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_wav) { 242effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'audio/wav'")); 243effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'audio/wav; codecs=\"1\"'")); 244effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestWAVUnacceptableCombinations("audio/wav"); 246effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 247effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'audio/x-wav'")); 248effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'audio/x-wav; codecs=\"1\"'")); 249effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestWAVUnacceptableCombinations("audio/x-wav"); 251effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 252effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 253effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) { 254cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // On Android, VP9 is supported only on KitKat and above (API level 19). 255cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::string VP9Probably = "probably"; 256cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::string VP9AndOpusProbably = "probably"; 257cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID) 258cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) VP9AndOpusProbably = ""; 259cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (base::android::BuildInfo::GetInstance()->sdk_int() < 19) 260cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) VP9Probably = ""; 261cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 262effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'video/webm'")); 263effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 264effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8\"'")); 265effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0\"'")); 266effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8, vorbis\"'")); 267effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0, vorbis\"'")); 268effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8, opus\"'")); 269effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8.0, opus\"'")); 270effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9\"'")); 272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0\"'")); 273cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'")); 274cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'")); 275cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9AndOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'")); 276cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9AndOpusProbably, 277cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CanPlay("'video/webm; codecs=\"vp9.0, opus\"'")); 278effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 279cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8, vp9\"'")); 280cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8.0, vp9.0\"'")); 281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestWEBMUnacceptableCombinations("video/webm"); 283effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 284effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'audio/webm'")); 285effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'audio/webm; codecs=\"vorbis\"'")); 286effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus\"'")); 287effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus, vorbis\"'")); 288effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 289effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8\"'")); 290effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0\"'")); 291effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, vorbis\"'")); 292effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, vorbis\"'")); 293effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, opus\"'")); 294effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, opus\"'")); 295effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 296effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9\"'")); 297effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0\"'")); 298effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, vorbis\"'")); 299effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, vorbis\"'")); 300effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, opus\"'")); 301effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, opus\"'")); 302effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestWEBMUnacceptableCombinations("audio/webm"); 304effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 305effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 306effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) { 307effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOggVideoMaybe, CanPlay("'video/ogg'")); 308effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora\"'")); 309effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOggVideoProbably, 310effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'video/ogg; codecs=\"theora, vorbis\"'")); 311effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOggVideoProbably, 312effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'video/ogg; codecs=\"theora, opus\"'")); 313effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kOggVideoProbably, 314effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'video/ogg; codecs=\"opus, vorbis\"'")); 315effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestOGGUnacceptableCombinations("video/ogg"); 317effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 318effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'")); 319effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'")); 320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"opus\"'")); 321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'")); 322effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 323c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora\"'")); 324c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, opus\"'")); 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, vorbis\"'")); 326c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestOGGUnacceptableCombinations("audio/ogg"); 328effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 329effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kMaybe, CanPlay("'application/ogg'")); 330effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'")); 331effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'")); 332cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(kOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'")); 333effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kTheoraProbably, 334effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/ogg; codecs=\"theora, vorbis\"'")); 335effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kTheoraProbably, 336effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/ogg; codecs=\"theora, opus\"'")); 337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(kOpusProbably, 338effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/ogg; codecs=\"opus, vorbis\"'")); 339c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestOGGUnacceptableCombinations("application/ogg"); 341effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 342effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 343effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) { 344effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'video/mp3'")); 345effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'video/mpeg'")); 346effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kNot, CanPlay("'video/x-mp3'")); 347effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // audio/mpeg without a codecs parameter (RFC 3003 compliant) 3490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'")); 3500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // audio/mpeg with mp3 in codecs parameter. (Not RFC compliant, but 352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // very common in the wild so it is a defacto standard). 353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"mp3\"'")); 354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 3550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1\"'")); 3560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3\"'")); 3570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.4D401E\"'")); 3590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.64001F\"'")); 3600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a\"'")); 3620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.40.2\"'")); 3630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("audio/mpeg"); 3650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // audio/mp3 does not allow any codecs parameter 3670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3'")); 3680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1\"'")); 3700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3\"'")); 3710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.4D401E\"'")); 3730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.64001F\"'")); 3740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a\"'")); 3760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.40.2\"'")); 3770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("audio/mp3"); 3790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // audio/x-mp3 does not allow any codecs parameter 3810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kPropProbably, CanPlay("'audio/x-mp3'")); 3820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1\"'")); 3840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3\"'")); 3850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1.4D401E\"'")); 3870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3.64001F\"'")); 3880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a\"'")); 3900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.2\"'")); 3910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("audio/x-mp3"); 393effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 394effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 395effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) { 396effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'")); 397effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 398f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); 399f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3\"'")); 400f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40\"'")); 401f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40\"'")); 402f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'")); 403f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'")); 404effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 4055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); 4065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'")); 40734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42801E\"'")); 40834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42C01E\"'")); 40934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 41034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E11E\"'")); 41134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42101E\"'")); 41234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42701E\"'")); 41334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42F01E\"'")); 41434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 4155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.40.2\"'")); 4165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, 4175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'")); 4185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, 4195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.5\"'")); 4205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); 4225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); 423effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, 4245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); 425effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, 4265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); 427effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("video/mp4"); 429effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 430effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); 431effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 432f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); 433f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); 434f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); 435f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); 436f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); 437f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); 438effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 4395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'")); 4405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'")); 44134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42801E\"'")); 44234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42C01E\"'")); 44334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 44434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1.42E11E\"'")); 44534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1.42101E\"'")); 44634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1.42701E\"'")); 44734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42F01E\"'")); 44834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 4495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.40.2\"'")); 4505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, 4515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40.2\"'")); 4525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, 4535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40.5\"'")); 4545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'")); 4565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); 457effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, 4585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); 459effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, 4605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); 461effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("video/x-m4v"); 463effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 464effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); 465f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); 4665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); 467f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 468f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); 469f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); 470f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); 471f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); 472f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 473f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); 474f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); 475f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("audio/mp4"); 477effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 478effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); 479f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); 4805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); 481f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 482f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); 483f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); 484f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); 485f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); 486f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 487f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); 488f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); 489f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("audio/x-m4a"); 491effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 492effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 493effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { 494cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // HLS are supported only on Android IceCreamSandwich and above (API level 14) 4955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string probablyCanPlayHLS = kNot; 4965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string maybeCanPlayHLS = kNot; 497cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID) 4985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { 4995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) probablyCanPlayHLS = kProbably; 5005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) maybeCanPlayHLS = kMaybe; 5015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 502cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 5035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/x-mpegurl'")); 5045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1\"'")); 5075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3\"'")); 5095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"mp4a.40\"'")); 5115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 512f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40\"'")); 5135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 514f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40\"'")); 515f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E\"'")); 5185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E\"'")); 5205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 52134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3.42801E\"'")); 52234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 52334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3.42C01E\"'")); 52434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 52534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 52634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42E11E\"'")); 52734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 52834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42101E\"'")); 52934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 53034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42701E\"'")); 53134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 53234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42F01E\"'")); 53334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 53434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 535effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/x-mpegurl; codecs=\"mp4a.40.2\"'")); 5365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.2\"'")); 5385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.5\"'")); 5405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.2\"'")); 5435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.2\"'")); 5455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40\"'")); 5475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40\"'")); 549f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("application/x-mpegurl"); 551f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/vnd.apple.mpegurl'")); 553f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 555effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1\"'")); 5565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 557effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3\"'")); 5585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 559f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40\"'")); 5605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 561f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a.40\"'")); 5625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 563f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40\"'")); 564f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42E01E\"'")); 5675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 5685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.42E01E\"'")); 5695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 57034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.42801E\"'")); 57134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 57234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.42C01E\"'")); 57334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 57434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 57534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42E11E\"'")); 57634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 57734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42101E\"'")); 57834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 57934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42701E\"'")); 58034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 58134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42F01E\"'")); 58234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 58334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(probablyCanPlayHLS, 584effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40.2\"'")); 585effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a.40.2\"'")); 5885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.2\"'")); 5905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; " 5925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "codecs=\"avc1.42E01E, mp4a.40\"'")); 5935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(maybeCanPlayHLS, 5945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CanPlay("'application/vnd.apple.mpegurl; " 5955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "codecs=\"avc3.42E01E, mp4a.40\"'")); 5965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); 598effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 599effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 600effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} // namespace content 601