87d99691309ed08f5a6ebef57440eca8d9f75241
[platform/framework/web/crosswalk.git] / src / content / browser / media / media_canplaytype_browsertest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "content/browser/media/media_browsertest.h"
8 #include "content/public/test/browser_test_utils.h"
9 #include "content/public/test/content_browser_test_utils.h"
10 #include "content/shell/browser/shell.h"
11
12 #if defined(OS_ANDROID)
13 #include "base/android/build_info.h"
14 #endif
15
16 const char kProbably[] = "probably";
17 const char kMaybe[] = "maybe";
18 const char kNot[] = "";
19
20 #if defined(USE_PROPRIETARY_CODECS)
21 const char kPropProbably[] = "probably";
22 const char kPropMaybe[] = "maybe";
23 #else
24 const char kPropProbably[] = "";
25 const char kPropMaybe[] = "";
26 #endif  // USE_PROPRIETARY_CODECS
27
28 // TODO(amogh.bihani): Change the opus tests when opus is  on
29 // Android. (http://crbug.com/318436).
30 #if !defined(OS_ANDROID)
31 const char kOggVideoProbably[] = "probably";
32 const char kOggVideoMaybe[] = "maybe";
33 const char kTheoraProbably[] = "probably";
34 const char kOpusProbably[] = "probably";
35 #if defined(USE_PROPRIETARY_CODECS)
36 const char kTheoraAndPropProbably[] = "probably";
37 const char kOpusAndPropProbably[] = "probably";
38 #else
39 const char kTheoraAndPropProbably[] = "";
40 const char kOpusAndPropProbably[] = "";
41 #endif  // USE_PROPRIETARY_CODECS
42 #else
43 const char kOggVideoProbably[] = "";
44 const char kOggVideoMaybe[] = "";
45 const char kTheoraProbably[] = "";
46 const char kOpusProbably[] = "";
47 const char kTheoraAndPropProbably[] = "maybe";
48 const char kOpusAndPropProbably[] = "maybe";
49 #endif  // !OS_ANDROID
50
51 namespace content {
52
53 class MediaCanPlayTypeTest : public MediaBrowserTest {
54 public:
55   MediaCanPlayTypeTest() : url_("about:blank") { }
56
57   virtual void SetUpOnMainThread() OVERRIDE {
58     NavigateToURL(shell(), url_);
59   }
60
61   std::string CanPlay(const std::string& type) {
62     std::string command("document.createElement('video').canPlayType(");
63     command.append(type);
64     command.append(")");
65
66     std::string result;
67     EXPECT_TRUE(ExecuteScriptAndExtractString(
68         shell()->web_contents(),
69         "window.domAutomationController.send(" + command + ");",
70         &result));
71     return result;
72   }
73
74 private:
75   GURL url_;
76   DISALLOW_COPY_AND_ASSIGN(MediaCanPlayTypeTest);
77 };
78
79 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_wav) {
80   EXPECT_EQ(kMaybe, CanPlay("'audio/wav'"));
81   EXPECT_EQ(kProbably, CanPlay("'audio/wav; codecs=\"1\"'"));
82
83   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vorbis\"'"));
84   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"theora\"'"));
85
86   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8\"'"));
87   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8.0\"'"));
88   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9\"'"));
89   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9.0\"'"));
90   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus\"'"));
91
92   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc1\"'"));
93   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc3\"'"));
94   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"mp4a\"'"));
95   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc1.4D401E\"'"));
96   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc3.64001F\"'"));
97   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"mp4a.40.5\"'"));
98
99   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, mp4a\"'"));
100   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, opus\"'"));
101   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, theora\"'"));
102   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"1, vorbis\"'"));
103   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus, vorbis\"'"));
104   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus, theora\"'"));
105   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vorbis, mp4a\"'"));
106
107   EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"unknown\"'"));
108
109   EXPECT_EQ(kMaybe, CanPlay("'audio/x-wav'"));
110   EXPECT_EQ(kProbably, CanPlay("'audio/x-wav; codecs=\"1\"'"));
111
112   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vorbis\"'"));
113   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"theora\"'"));
114
115   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp8\"'"));
116   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp8.0\"'"));
117   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp9\"'"));
118   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vp9.0\"'"));
119   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus\"'"));
120
121   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc1\"'"));
122   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc3\"'"));
123   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"mp4a\"'"));
124   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc1.4D401E\"'"));
125   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"avc3.64001F\"'"));
126   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"mp4a.40.5\"'"));
127
128   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, mp4a\"'"));
129   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, opus\"'"));
130   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, theora\"'"));
131   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"1, vorbis\"'"));
132   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus, vorbis\"'"));
133   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"opus, theora\"'"));
134   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"vorbis, mp4a\"'"));
135
136   EXPECT_EQ(kNot, CanPlay("'audio/x-wav; codecs=\"unknown\"'"));
137 }
138
139 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_webm) {
140   // On Android, VP9 is supported only on KitKat and above (API level 19).
141   std::string VP9Probably = "probably";
142   std::string VP9AndOpusProbably = "probably";
143 #if defined(OS_ANDROID)
144   VP9AndOpusProbably = "";
145   if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
146     VP9Probably = "";
147 #endif
148   EXPECT_EQ(kMaybe, CanPlay("'video/webm'"));
149
150   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8\"'"));
151   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0\"'"));
152   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8, vorbis\"'"));
153   EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0, vorbis\"'"));
154   EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8, opus\"'"));
155   EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8.0, opus\"'"));
156
157   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9\"'"));
158   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0\"'"));
159   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'"));
160   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'"));
161   EXPECT_EQ(VP9AndOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'"));
162   EXPECT_EQ(VP9AndOpusProbably,
163             CanPlay("'video/webm; codecs=\"vp9.0, opus\"'"));
164
165   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8, vp9\"'"));
166   EXPECT_EQ(VP9Probably, CanPlay("'video/webm; codecs=\"vp8.0, vp9.0\"'"));
167   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, theora\"'"));
168   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, avc1\"'"));
169   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, avc3\"'"));
170
171   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, 1\"'"));
172   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, 1\"'"));
173   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, mp4a.40.2\"'"));
174   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, mp4a.40.2\"'"));
175
176   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, 1\"'"));
177   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, 1\"'"));
178   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, mp4a.40.2\"'"));
179   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, mp4a.40.2\"'"));
180
181   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"theora\"'"));
182   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"1\"'"));
183
184   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc1\"'"));
185   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc3\"'"));
186   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"mp4a\"'"));
187   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc1.4D401E\"'"));
188   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc3.64001F\"'"));
189   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"mp4a.40.2\"'"));
190
191   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8\"'"));
192   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8.0\"'"));
193   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP9\"'"));
194   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"Vp9.0\"'"));
195
196   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP8, Vorbis\"'"));
197   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, Vorbis\"'"));
198   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"VP9, Opus\"'"));
199   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, Opus\"'"));
200
201   EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"unknown\"'"));
202
203   EXPECT_EQ(kMaybe, CanPlay("'audio/webm'"));
204   EXPECT_EQ(kProbably, CanPlay("'audio/webm; codecs=\"vorbis\"'"));
205   EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus\"'"));
206   EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus, vorbis\"'"));
207
208   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8\"'"));
209   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0\"'"));
210   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, vorbis\"'"));
211   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, vorbis\"'"));
212   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, opus\"'"));
213   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, opus\"'"));
214
215   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9\"'"));
216   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0\"'"));
217   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, vorbis\"'"));
218   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, vorbis\"'"));
219   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, opus\"'"));
220   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, opus\"'"));
221
222   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1\"'"));
223   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1, opus\"'"));
224   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1, vorbis\"'"));
225   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vorbis, mp4a\"'"));
226
227   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc1\"'"));
228   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc3\"'"));
229   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"mp4a\"'"));
230   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc1.4D401E\"'"));
231   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc3.64001F\"'"));
232   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"mp4a.40.2\"'"));
233
234   EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"unknown\"'"));
235 }
236
237 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_ogg) {
238   EXPECT_EQ(kOggVideoMaybe, CanPlay("'video/ogg'"));
239   EXPECT_EQ(kOggVideoProbably, CanPlay("'video/ogg; codecs=\"theora\"'"));
240   EXPECT_EQ(kOggVideoProbably,
241             CanPlay("'video/ogg; codecs=\"theora, vorbis\"'"));
242   EXPECT_EQ(kOggVideoProbably,
243             CanPlay("'video/ogg; codecs=\"theora, opus\"'"));
244   EXPECT_EQ(kOggVideoProbably,
245             CanPlay("'video/ogg; codecs=\"opus, vorbis\"'"));
246
247   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp8\"'"));
248   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp8.0\"'"));
249   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp9\"'"));
250   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"vp9.0\"'"));
251
252   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1\"'"));
253   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3\"'"));
254   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"mp4a\"'"));
255   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, mp4a\"'"));
256   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, vorbis\"'"));
257   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, mp4a\"'"));
258   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, vorbis\"'"));
259   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, vp8\"'"));
260   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3, vp9\"'"));
261   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1, avc3\"'"));
262
263   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E\"'"));
264   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F\"'"));
265   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"mp4a.4.02\"'"));
266   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
267   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'"));
268   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc1.4D401E, vorbis\"'"));
269   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"avc3.64001F, vorbis\"'"));
270
271   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora\"'"));
272   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Opus\"'"));
273   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Vorbis\"'"));
274   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora, Opus\"'"));
275   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"Theora, Vorbis\"'"));
276
277   EXPECT_EQ(kNot, CanPlay("'video/ogg; codecs=\"unknown\"'"));
278
279   EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'"));
280   EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
281   EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"opus\"'"));
282   EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"vorbis, opus\"'"));
283
284   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora\"'"));
285   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, vorbis\"'"));
286   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"theora, opus\"'"));
287   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"opus, 1\"'"));
288   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vorbis, 1\"'"));
289
290   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp8\"'"));
291   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp8.0\"'"));
292   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp9\"'"));
293   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"vp9.0\"'"));
294
295   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc1\"'"));
296   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc3\"'"));
297   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"mp4a\"'"));
298   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc1.4D401E\"'"));
299   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"avc3.64001F\"'"));
300   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"mp4a.40.2\"'"));
301
302   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora\"'"));
303   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Opus\"'"));
304   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Vorbis\"'"));
305   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora, Vorbis\"'"));
306   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"Theora, Opus\"'"));
307
308   EXPECT_EQ(kNot, CanPlay("'audio/ogg; codecs=\"unknown\"'"));
309
310   EXPECT_EQ(kMaybe, CanPlay("'application/ogg'"));
311   EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'"));
312   EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'"));
313   EXPECT_EQ(kOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
314   EXPECT_EQ(kTheoraProbably,
315             CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));
316   EXPECT_EQ(kTheoraProbably,
317             CanPlay("'application/ogg; codecs=\"theora, opus\"'"));
318   EXPECT_EQ(kOpusProbably,
319             CanPlay("'application/ogg; codecs=\"opus, vorbis\"'"));
320
321   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp8\"'"));
322   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp8.0\"'"));
323   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp9\"'"));
324   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"vp9.0\"'"));
325
326   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1\"'"));
327   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3\"'"));
328   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"mp4a\"'"));
329   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, mp4a\"'"));
330   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, vorbis\"'"));
331   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, mp4a\"'"));
332   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, vorbis\"'"));
333   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, vp8\"'"));
334   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3, vp9\"'"));
335   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1, avc3\"'"));
336
337   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1.4D401E\"'"));
338   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3.64001F\"'"));
339   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"mp4a.40.2\"'"));
340   EXPECT_EQ(kNot,
341             CanPlay("'application/ogg; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
342   EXPECT_EQ(kNot,
343             CanPlay("'application/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'"));
344   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc1.4D401E, vorbis\"'"));
345   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"avc3.64001F, vorbis\"'"));
346
347   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora\"'"));
348   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Vorbis\"'"));
349   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Opus\"'"));
350   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora, Vorbis\"'"));
351   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"Theora, Opus\"'"));
352
353   EXPECT_EQ(kNot, CanPlay("'application/ogg; codecs=\"unknown\"'"));
354 }
355
356 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) {
357   EXPECT_EQ(kNot, CanPlay("'video/mp3'"));
358   EXPECT_EQ(kNot, CanPlay("'video/mpeg'"));
359   EXPECT_EQ(kNot, CanPlay("'video/x-mp3'"));
360
361   // audio/mpeg does not allow any codecs parameter
362   EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'"));
363
364   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1\"'"));
365   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3\"'"));
366
367   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.4D401E\"'"));
368   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.64001F\"'"));
369
370   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a\"'"));
371   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.40.2\"'"));
372
373   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.unknown\"'"));
374   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.unknown\"'"));
375   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.unknown\"'"));
376
377   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1.\"'"));
378   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3.\"'"));
379   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4a.\"'"));
380
381   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vorbis\"'"));
382   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"opus\"'"));
383   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"theora\"'"));
384   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp8\"'"));
385   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp8.0\"'"));
386   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp9\"'"));
387   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"vp9.0\"'"));
388
389   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1\"'"));
390   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1.4d401e\"'"));
391   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3\"'"));
392   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3.64001f\"'"));
393   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"MP4A\"'"));
394   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"MP4A.40.2\"'"));
395   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC1, MP4\"'"));
396   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"AVC3, MP4\"'"));
397   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
398   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\", AVC3.64001F, MP4.40.2\"'"));
399
400   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc2\"'"));
401   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc4\"'"));
402
403   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc1x\"'"));
404   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"avc3x\"'"));
405   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"mp4ax\"'"));
406
407   EXPECT_EQ(kNot, CanPlay("'audio/mpeg; codecs=\"unknown\"'"));
408
409   // audio/mp3 does not allow any codecs parameter
410   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3'"));
411
412   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1\"'"));
413   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3\"'"));
414
415   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.4D401E\"'"));
416   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.64001F\"'"));
417
418   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a\"'"));
419   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.40.2\"'"));
420
421   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.unknown\"'"));
422   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.unknown\"'"));
423   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.unknown\"'"));
424
425   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1.\"'"));
426   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3.\"'"));
427   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4a.\"'"));
428
429   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vorbis\"'"));
430   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"opus\"'"));
431   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"theora\"'"));
432   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp8\"'"));
433   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp8.0\"'"));
434   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp9\"'"));
435   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"vp9.0\"'"));
436
437   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1\"'"));
438   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1.4d401e\"'"));
439   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3\"'"));
440   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3.64001f\"'"));
441   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"MP4A\"'"));
442   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"MP4A.40.2\"'"));
443   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC1, MP4\"'"));
444   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"AVC3, MP4\"'"));
445   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
446   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\", AVC3.64001F, MP4.40.2\"'"));
447
448   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc2\"'"));
449   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc4\"'"));
450
451   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc1x\"'"));
452   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"avc3x\"'"));
453   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"mp4ax\"'"));
454
455   EXPECT_EQ(kNot, CanPlay("'audio/mp3; codecs=\"unknown\"'"));
456
457   // audio/x-mp3 does not allow any codecs parameter
458   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-mp3'"));
459
460   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1\"'"));
461   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3\"'"));
462
463   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1.4D401E\"'"));
464   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3.64001F\"'"));
465
466   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a\"'"));
467   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.2\"'"));
468
469   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1.unknown\"'"));
470   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3.unknown\"'"));
471   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.unknown\"'"));
472
473   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vorbis\"'"));
474   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"opus\"'"));
475   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"theora\"'"));
476   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp8\"'"));
477   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp8.0\"'"));
478   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp9\"'"));
479   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"vp9.0\"'"));
480
481   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1\"'"));
482   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1.4d401e\"'"));
483   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3\"'"));
484   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3.64001f\"'"));
485   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"MP4A\"'"));
486   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"MP4A.40.2\"'"));
487   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC1, MP4\"'"));
488   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"AVC3, MP4\"'"));
489   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
490   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\", AVC3.64001F, MP4.40.2\"'"));
491
492   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc2\"'"));
493   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc4\"'"));
494
495   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc1x\"'"));
496   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"avc3x\"'"));
497   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4ax\"'"));
498
499   EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"unknown\"'"));
500 }
501
502 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
503   // TODO(amogh.bihani): Change this expectation when bug 53193 is fixed.
504   std::string PropAndVP9Probably = "";
505 #if defined (OS_ANDROID)
506   if (base::android::BuildInfo::GetInstance()->sdk_int() < 19)
507     PropAndVP9Probably = "maybe";
508   else
509     PropAndVP9Probably = "probably";
510 #else
511 #if defined(USE_PROPRIETARY_CODECS)
512   PropAndVP9Probably = "probably";
513 #endif  // USE_PROPRIETARY_CODECS
514 #endif  // OS_ANDROID
515   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'"));
516
517   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1\"'"));
518   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3\"'"));
519   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a\"'"));
520   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, mp4a\"'"));
521   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3, mp4a\"'"));
522   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'"));
523
524   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'"));
525   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.64001F\"'"));
526   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.40.2\"'"));
527   EXPECT_EQ(kPropProbably,
528             CanPlay("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
529   EXPECT_EQ(kPropProbably,
530             CanPlay("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'"));
531
532   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
533   // http://crbug.com/53193 ----------------------------------------------------
534   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.unknown\"'"));
535   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.unknown\"'"));
536   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.unknown\"'"));
537
538   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.\"'"));
539   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.\"'"));
540   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.\"'"));
541
542   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp8\"'"));
543   EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/mp4; codecs=\"vp9\"'"));
544
545   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vorbis\"'"));
546   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, vorbis\"'"));
547   EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3, vorbis\"'"));
548   EXPECT_EQ(kPropProbably,
549             CanPlay("'video/mp4; codecs=\"avc1.4D401E, vorbis\"'"));
550   EXPECT_EQ(kPropProbably,
551             CanPlay("'video/mp4; codecs=\"avc3.64001F, vorbis\"'"));
552
553   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"opus\"'"));
554   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"vp8, opus\"'"));
555   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"vp9, opus\"'"));
556
557   EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'video/mp4; codecs=\"theora\"'"));
558   EXPECT_EQ(kTheoraAndPropProbably,
559             CanPlay("'video/mp4; codecs=\"theora, vorbis\"'"));
560   EXPECT_EQ(kTheoraAndPropProbably,
561             CanPlay("'video/mp4; codecs=\"theora, mp4a\"'"));
562   EXPECT_EQ(kTheoraAndPropProbably,
563             CanPlay("'video/mp4; codecs=\"theora, mp4a.40.2\"'"));
564   EXPECT_EQ(kTheoraAndPropProbably,
565             CanPlay("'video/mp4; codecs=\"theora, avc1\"'"));
566   EXPECT_EQ(kTheoraAndPropProbably,
567             CanPlay("'video/mp4; codecs=\"theora, avc3\"'"));
568   EXPECT_EQ(kTheoraAndPropProbably,
569             CanPlay("'video/mp4; codecs=\"theora, avc1.4D401E\"'"));
570   EXPECT_EQ(kTheoraAndPropProbably,
571             CanPlay("'video/mp4; codecs=\"theora, avc3.64001F\"'"));
572
573   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1\"'"));
574   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1.4d401e\"'"));
575   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3\"'"));
576   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3.64001f\"'"));
577   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"MP4A\"'"));
578   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"MP4A.40.2\"'"));
579   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC1, MP4\"'"));
580   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"AVC3, MP4\"'"));
581   EXPECT_EQ(kPropMaybe,
582             CanPlay("'video/mp4; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
583   EXPECT_EQ(kPropMaybe,
584             CanPlay("'video/mp4; codecs=\", AVC3.64001F, MP4.40.2\"'"));
585
586   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc2\"'"));
587   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc4\"'"));
588
589   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1x\"'"));
590   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3x\"'"));
591   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4ax\"'"));
592
593   EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"unknown\"'"));
594   // ---------------------------------------------------------------------------
595
596   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'"));
597
598   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1\"'"));
599   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3\"'"));
600   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a\"'"));
601   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a\"'"));
602   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a\"'"));
603   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'"));
604
605   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.4D401E\"'"));
606   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.64001F\"'"));
607   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.40.2\"'"));
608   EXPECT_EQ(kPropProbably,
609             CanPlay("'video/x-m4v; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
610   EXPECT_EQ(kPropProbably,
611             CanPlay("'video/x-m4v; codecs=\"avc3.64001F, mp4a.40.5\"'"));
612
613   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
614   // http://crbug.com/53193 ----------------------------------------------------
615   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.unknown\"'"));
616   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.unknown\"'"));
617   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.unknown\"'"));
618
619   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.\"'"));
620   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.\"'"));
621   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.\"'"));
622
623   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vp8\"'"));
624   EXPECT_EQ(PropAndVP9Probably, CanPlay("'video/x-m4v; codecs=\"vp9\"'"));
625
626   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"vorbis\"'"));
627   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1, vorbis\"'"));
628   EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3, vorbis\"'"));
629   EXPECT_EQ(kPropProbably,
630             CanPlay("'video/x-m4v; codecs=\"avc1.4D401E, vorbis\"'"));
631   EXPECT_EQ(kPropProbably,
632             CanPlay("'video/x-m4v; codecs=\"avc3.64001F, vorbis\"'"));
633
634   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/x-m4v; codecs=\"opus\"'"));
635   EXPECT_EQ(kOpusAndPropProbably,
636             CanPlay("'video/x-m4v; codecs=\"vp8, opus\"'"));
637   EXPECT_EQ(kOpusAndPropProbably,
638             CanPlay("'video/x-m4v; codecs=\"vp9, opus\"'"));
639
640   EXPECT_EQ(kTheoraAndPropProbably,
641             CanPlay("'video/x-m4v; codecs=\"theora\"'"));
642   EXPECT_EQ(kTheoraAndPropProbably,
643             CanPlay("'video/x-m4v; codecs=\"theora, vorbis\"'"));
644   EXPECT_EQ(kTheoraAndPropProbably,
645             CanPlay("'video/x-m4v; codecs=\"theora, mp4a\"'"));
646   EXPECT_EQ(kTheoraAndPropProbably,
647             CanPlay("'video/x-m4v; codecs=\"theora, mp4a.40.2\"'"));
648   EXPECT_EQ(kTheoraAndPropProbably,
649             CanPlay("'video/x-m4v; codecs=\"theora, avc1\"'"));
650   EXPECT_EQ(kTheoraAndPropProbably,
651             CanPlay("'video/x-m4v; codecs=\"theora, avc3\"'"));
652   EXPECT_EQ(kTheoraAndPropProbably,
653             CanPlay("'video/x-m4v; codecs=\"theora, avc1.4D401E\"'"));
654   EXPECT_EQ(kTheoraAndPropProbably,
655             CanPlay("'video/x-m4v; codecs=\"theora, avc3.64001F\"'"));
656
657   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1\"'"));
658   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1.4d401e\"'"));
659   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3\"'"));
660   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3.64001f\"'"));
661   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"MP4A\"'"));
662   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"MP4A.40.2\"'"));
663   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC1, MP4\"'"));
664   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"AVC3, MP4\"'"));
665   EXPECT_EQ(kPropMaybe,
666             CanPlay("'video/x-m4v; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
667   EXPECT_EQ(kPropMaybe,
668             CanPlay("'video/x-m4v; codecs=\", AVC3.64001F, MP4.40.2\"'"));
669
670   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc2\"'"));
671   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc4\"'"));
672
673   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1x\"'"));
674   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3x\"'"));
675   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4ax\"'"));
676
677   EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"unknown\"'"));
678   // ---------------------------------------------------------------------------
679
680   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
681   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
682   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
683
684   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
685   // http://crbug.com/53193 ----------------------------------------------------
686   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
687   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
688   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1, mp4a\"'"));
689   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3, mp4a\"'"));
690
691   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
692   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'"));
693
694   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.unknown\"'"));
695   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.unknown\"'"));
696   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.unknown\"'"));
697
698   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1.\"'"));
699   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3.\"'"));
700   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.\"'"));
701
702   EXPECT_EQ(kPropProbably,
703             CanPlay("'audio/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
704   EXPECT_EQ(kPropProbably,
705             CanPlay("'audio/mp4; codecs=\"avc3.64001F mp4a.40.2\"'"));
706   EXPECT_EQ(kPropProbably,
707             CanPlay("'audio/mp4; codecs=\"mp4a, vorbis\"'"));
708   EXPECT_EQ(kPropProbably,
709             CanPlay("'audio/mp4; codecs=\"mp4a.40.2, vorbis\"'"));
710
711   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vorbis\"'"));
712
713   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8\"'"));
714   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8.0\"'"));
715   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9\"'"));
716   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/mp4; codecs=\"vp9.0\"'"));
717
718   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"opus\"'"));
719   EXPECT_EQ(kOpusAndPropProbably,
720             CanPlay("'audio/mp4; codecs=\"mp4a, opus\"'"));
721   EXPECT_EQ(kOpusAndPropProbably,
722             CanPlay("'audio/mp4; codecs=\"vorbis, opus\"'"));
723   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"vp8, opus\"'"));
724   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"vp9, opus\"'"));
725
726   EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'audio/mp4; codecs=\"theora\"'"));
727   EXPECT_EQ(kTheoraAndPropProbably,
728             CanPlay("'audio/mp4; codecs=\"theora, vorbis\"'"));
729   EXPECT_EQ(kTheoraAndPropProbably,
730             CanPlay("'audio/mp4; codecs=\"theora, mp4a\"'"));
731   EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1, vorbis\"'"));
732
733   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1\"'"));
734   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1.4d401e\"'"));
735   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3\"'"));
736   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3.64001f\"'"));
737   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"MP4A\"'"));
738   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"MP4A.40.2\"'"));
739   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC1, MP4\"'"));
740   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"AVC3, MP4\"'"));
741   EXPECT_EQ(kPropMaybe,
742             CanPlay("'audio/mp4; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
743   EXPECT_EQ(kPropMaybe,
744             CanPlay("'audio/mp4; codecs=\", AVC3.64001F, MP4.40.2\"'"));
745
746   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc2\"'"));
747   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc4\"'"));
748
749   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc1x\"'"));
750   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc3x\"'"));
751   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4ax\"'"));
752
753   EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"unknown\"'"));
754   // ---------------------------------------------------------------------------
755
756   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
757   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a\"'"));
758   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));
759
760   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
761   // http://crbug.com/53193 ----------------------------------------------------
762   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1\"'"));
763   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3\"'"));
764   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'"));
765   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'"));
766
767   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'"));
768   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'"));
769
770   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.unknown\"'"));
771   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.unknown\"'"));
772   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.unknown\"'"));
773
774   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1.\"'"));
775   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc3.\"'"));
776   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.\"'"));
777
778   EXPECT_EQ(kPropProbably,
779             CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
780   EXPECT_EQ(kPropProbably,
781             CanPlay("'audio/x-m4a; codecs=\"avc3.64001F mp4a.40.2\"'"));
782   EXPECT_EQ(kPropProbably,
783             CanPlay("'audio/x-m4a; codecs=\"mp4a, vorbis\"'"));
784   EXPECT_EQ(kPropProbably,
785             CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2, vorbis\"'"));
786
787   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vorbis\"'"));
788
789   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8\"'"));
790   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"vp8.0\"'"));
791   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9\"'"));
792   EXPECT_EQ(PropAndVP9Probably, CanPlay("'audio/x-m4a; codecs=\"vp9.0\"'"));
793
794   EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/x-m4a; codecs=\"opus\"'"));
795   EXPECT_EQ(kOpusAndPropProbably,
796             CanPlay("'audio/x-m4a; codecs=\"mp4a, opus\"'"));
797   EXPECT_EQ(kOpusAndPropProbably,
798             CanPlay("'audio/x-m4a; codecs=\"vorbis, opus\"'"));
799   EXPECT_EQ(kOpusAndPropProbably,
800             CanPlay("'audio/x-m4a; codecs=\"vp8, opus\"'"));
801   EXPECT_EQ(kOpusAndPropProbably,
802             CanPlay("'audio/x-m4a; codecs=\"vp9, opus\"'"));
803
804   EXPECT_EQ(kTheoraAndPropProbably,
805             CanPlay("'audio/x-m4a; codecs=\"theora\"'"));
806   EXPECT_EQ(kTheoraAndPropProbably,
807             CanPlay("'audio/x-m4a; codecs=\"theora, vorbis\"'"));
808   EXPECT_EQ(kTheoraAndPropProbably,
809             CanPlay("'audio/x-m4a; codecs=\"theora, mp4a\"'"));
810   EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"avc1, vorbis\"'"));
811
812   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1\"'"));
813   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1.4d401e\"'"));
814   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3\"'"));
815   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3.64001f\"'"));
816   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"MP4A\"'"));
817   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"MP4A.40.2\"'"));
818   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC1, MP4\"'"));
819   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"AVC3, MP4\"'"));
820   EXPECT_EQ(kPropMaybe,
821             CanPlay("'audio/x-m4a; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
822   EXPECT_EQ(kPropMaybe,
823             CanPlay("'audio/x-m4a; codecs=\", AVC3.64001F, MP4.40.2\"'"));
824
825   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc2\"'"));
826   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc4\"'"));
827
828   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc1x\"'"));
829   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"avc3x\"'"));
830   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4ax\"'"));
831
832   EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"unknown\"'"));
833   // ---------------------------------------------------------------------------
834 }
835
836 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) {
837   // HLS are supported only on Android IceCreamSandwich and above (API level 14)
838   std::string HLSProbably = "";
839   std::string HLSMaybe = "";
840   std::string HLSAndVP9Probably = "";
841 #if defined(OS_ANDROID)
842   int sdk = base::android::BuildInfo::GetInstance()->sdk_int();
843   if (sdk > 13) {
844     HLSProbably = "probably";
845     HLSMaybe = "maybe";
846     if (sdk < 19)
847       HLSAndVP9Probably = "maybe";
848     else
849       HLSAndVP9Probably = "probably";
850   }
851 #endif
852   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl'"));
853
854   EXPECT_EQ(HLSProbably,
855             CanPlay("'application/x-mpegurl; codecs=\"avc1\"'"));
856   EXPECT_EQ(HLSProbably,
857             CanPlay("'application/x-mpegurl; codecs=\"avc3\"'"));
858   EXPECT_EQ(HLSProbably,
859             CanPlay("'application/x-mpegurl; codecs=\"mp4a\"'"));
860   EXPECT_EQ(HLSProbably,
861             CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a\"'"));
862   EXPECT_EQ(HLSProbably,
863             CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a\"'"));
864
865   EXPECT_EQ(HLSProbably,
866             CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E\"'"));
867   EXPECT_EQ(HLSProbably,
868             CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F\"'"));
869   EXPECT_EQ(HLSProbably,
870             CanPlay("'application/x-mpegurl; codecs=\"mp4a.40.2\"'"));
871   EXPECT_EQ(HLSProbably,
872         CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
873   EXPECT_EQ(HLSProbably,
874         CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, mp4a.40.5\"'"));
875
876   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
877   // http://crbug.com/53193 ----------------------------------------------------
878   EXPECT_EQ(HLSProbably,
879             CanPlay("'application/x-mpegurl; codecs=\"avc1.unknown\"'"));
880   EXPECT_EQ(HLSProbably,
881             CanPlay("'application/x-mpegurl; codecs=\"avc3.unknown\"'"));
882   EXPECT_EQ(HLSProbably,
883             CanPlay("'application/x-mpegurl; codecs=\"mp4a.unknown\"'"));
884
885   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc1.\"'"));
886   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"avc3.\"'"));
887   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"mp4a.\"'"));
888
889   EXPECT_EQ(HLSProbably, CanPlay("'application/x-mpegurl; codecs=\"vp8\"'"));
890   EXPECT_EQ(HLSAndVP9Probably,
891             CanPlay("'application/x-mpegurl; codecs=\"vp9\"'"));
892   EXPECT_EQ(HLSProbably,
893             CanPlay("'application/x-mpegurl; codecs=\"vorbis\"'"));
894
895   EXPECT_EQ(HLSProbably,
896             CanPlay("'application/x-mpegurl; codecs=\"avc1, vorbis\"'"));
897   EXPECT_EQ(HLSProbably,
898             CanPlay("'application/x-mpegurl; codecs=\"avc3, vorbis\"'"));
899   EXPECT_EQ(HLSProbably,
900             CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
901   EXPECT_EQ(HLSProbably,
902             CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
903
904   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"opus\"'"));
905   EXPECT_EQ(HLSMaybe,
906             CanPlay("'application/x-mpegurl; codecs=\"vp8, opus\"'"));
907   EXPECT_EQ(HLSMaybe,
908             CanPlay("'application/x-mpegurl; codecs=\"vp9, opus\"'"));
909
910   EXPECT_EQ(HLSMaybe,
911             CanPlay("'application/x-mpegurl; codecs=\"theora\"'"));
912   EXPECT_EQ(HLSMaybe,
913             CanPlay("'application/x-mpegurl; codecs=\"theora, vorbis\"'"));
914   EXPECT_EQ(HLSMaybe,
915             CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a\"'"));
916   EXPECT_EQ(HLSMaybe,
917             CanPlay("'application/x-mpegurl; codecs=\"theora, mp4a.40.2\"'"));
918
919   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC1\"'"));
920   EXPECT_EQ(HLSMaybe,
921             CanPlay("'application/x-mpegurl; codecs=\"AVC1.4d401e\"'"));
922   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"AVC3\"'"));
923   EXPECT_EQ(HLSMaybe,
924             CanPlay("'application/x-mpegurl; codecs=\"AVC3.64001f\"'"));
925   EXPECT_EQ(HLSMaybe, CanPlay("'application/x-mpegurl; codecs=\"MP4A\"'"));
926   EXPECT_EQ(HLSMaybe,
927             CanPlay("'application/x-mpegurl; codecs=\"MP4A.40.2\"'"));
928   EXPECT_EQ(HLSMaybe,
929             CanPlay("'application/x-mpegurl; codecs=\"AVC1, MP4\"'"));
930   EXPECT_EQ(HLSMaybe,
931             CanPlay("'application/x-mpegurl; codecs=\"AVC3, MP4\"'"));
932   EXPECT_EQ(HLSMaybe,
933         CanPlay("'application/x-mpegurl; codecs=\", AVC1.4D401E, MP4.40.2\"'"));
934   EXPECT_EQ(HLSMaybe,
935         CanPlay("'application/x-mpegurl; codecs=\", AVC3.64001F, MP4.40.2\"'"));
936
937   EXPECT_EQ(HLSMaybe,
938             CanPlay("'application/x-mpegurl; codecs=\"avc2\"'"));
939   EXPECT_EQ(HLSMaybe,
940             CanPlay("'application/x-mpegurl; codecs=\"avc4\"'"));
941
942   EXPECT_EQ(HLSMaybe,
943             CanPlay("'application/x-mpegurl; codecs=\"avc1x\"'"));
944   EXPECT_EQ(HLSMaybe,
945             CanPlay("'application/x-mpegurl; codecs=\"avc3x\"'"));
946   EXPECT_EQ(HLSMaybe,
947             CanPlay("'application/x-mpegurl; codecs=\"mp4ax\"'"));
948
949   EXPECT_EQ(HLSMaybe,
950             CanPlay("'application/x-mpegurl; codecs=\"unknown\"'"));
951   // ---------------------------------------------------------------------------
952
953   EXPECT_EQ(HLSMaybe, CanPlay("'application/vnd.apple.mpegurl'"));
954
955   EXPECT_EQ(HLSProbably,
956             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1\"'"));
957   EXPECT_EQ(HLSProbably,
958             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3\"'"));
959   EXPECT_EQ(HLSProbably,
960             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a\"'"));
961   EXPECT_EQ(HLSProbably,
962             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a\"'"));
963   EXPECT_EQ(HLSProbably,
964             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a\"'"));
965
966   EXPECT_EQ(HLSProbably,
967             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E\"'"));
968   EXPECT_EQ(HLSProbably,
969             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F\"'"));
970   EXPECT_EQ(HLSProbably,
971             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40.2\"'"));
972
973   // TODO(amogh.bihani): Change these tests when bug 53193 is fixed.
974   // http://crbug.com/53193 ----------------------------------------------------
975   EXPECT_EQ(HLSProbably,
976           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.unknown\"'"));
977   EXPECT_EQ(HLSProbably,
978           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.unknown\"'"));
979   EXPECT_EQ(HLSProbably,
980           CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.unknown\"'"));
981
982   EXPECT_EQ(HLSProbably,
983           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.\"'"));
984   EXPECT_EQ(HLSProbably,
985           CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.\"'"));
986   EXPECT_EQ(HLSProbably,
987           CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.\"'"));
988
989   EXPECT_EQ(HLSProbably,
990             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8\"'"));
991   EXPECT_EQ(HLSAndVP9Probably,
992             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9\"'"));
993   EXPECT_EQ(HLSProbably,
994             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vorbis\"'"));
995
996   EXPECT_EQ(HLSProbably,
997            CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, vorbis\"'"));
998   EXPECT_EQ(HLSProbably,
999            CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, vorbis\"'"));
1000   EXPECT_EQ(HLSProbably,
1001     CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E, vorbis\"'"));
1002   EXPECT_EQ(HLSProbably,
1003     CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F, vorbis\"'"));
1004
1005   EXPECT_EQ(HLSMaybe,
1006             CanPlay("'application/vnd.apple.mpegurl; codecs=\"opus\"'"));
1007   EXPECT_EQ(HLSMaybe,
1008             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp8, opus\"'"));
1009   EXPECT_EQ(HLSMaybe,
1010             CanPlay("'application/vnd.apple.mpegurl; codecs=\"vp9, opus\"'"));
1011
1012   EXPECT_EQ(HLSMaybe,
1013             CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora\"'"));
1014   EXPECT_EQ(HLSMaybe,
1015         CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, vorbis\"'"));
1016   EXPECT_EQ(HLSMaybe,
1017           CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a\"'"));
1018   EXPECT_EQ(HLSMaybe,
1019       CanPlay("'application/vnd.apple.mpegurl; codecs=\"theora, mp4a.40.2\"'"));
1020
1021   EXPECT_EQ(HLSMaybe,
1022             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1\"'"));
1023   EXPECT_EQ(HLSMaybe,
1024             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1.4d401e\"'"));
1025   EXPECT_EQ(HLSMaybe,
1026             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3\"'"));
1027   EXPECT_EQ(HLSMaybe,
1028             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3.64001f\"'"));
1029   EXPECT_EQ(HLSMaybe,
1030             CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A\"'"));
1031   EXPECT_EQ(HLSMaybe,
1032             CanPlay("'application/vnd.apple.mpegurl; codecs=\"MP4A.40.2\"'"));
1033   EXPECT_EQ(HLSMaybe,
1034             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC1, MP4\"'"));
1035   EXPECT_EQ(HLSMaybe,
1036             CanPlay("'application/vnd.apple.mpegurl; codecs=\"AVC3, MP4\"'"));
1037   EXPECT_EQ(HLSMaybe,
1038             CanPlay("'application/vnd.apple.mpegurl; "
1039                     "codecs=\", AVC1.4D401E, MP4.40.2\"'"));
1040   EXPECT_EQ(HLSMaybe,
1041             CanPlay("'application/vnd.apple.mpegurl; "
1042                     "codecs=\", AVC3.64001F, MP4.40.2\"'"));
1043
1044   EXPECT_EQ(HLSMaybe,
1045             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc2\"'"));
1046   EXPECT_EQ(HLSMaybe,
1047             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc4\"'"));
1048
1049   EXPECT_EQ(HLSMaybe,
1050             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1x\"'"));
1051   EXPECT_EQ(HLSMaybe,
1052             CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3x\"'"));
1053   EXPECT_EQ(HLSMaybe,
1054             CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4ax\"'"));
1055
1056   EXPECT_EQ(HLSMaybe,
1057             CanPlay("'application/vnd.apple.mpegurl; codecs=\"unknown\"'"));
1058   // ---------------------------------------------------------------------------
1059 }
1060
1061 }  // namespace content