OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 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/shell/browser/shell.h" | |
10 | |
11 const char* kProbablySupported = "probably"; | |
12 const char* kMaybeSupported = "maybe"; | |
13 const char* kNotSupported = ""; | |
14 #if defined(USE_PROPRIETARY_CODECS) | |
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
15 const char* kProprietaryProbablySupported = "probably"; | |
16 const char* kProprietaryMaybeSupported = "maybe"; | |
17 const char* kProprietaryProbablyElseMaybeSupported = "probably"; | |
18 #else | |
19 const char* kProprietaryProbablySupported = ""; | |
20 const char* kProprietaryMaybeSupported = ""; | |
21 const char* kProprietaryProbablyElseMaybeSupported = "maybe"; | |
22 #endif // USE_PROPRIETARY_CODECS | |
23 // TODO(amogh.bihani): Change the opus tests when opus is supported on | |
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable
amogh.bihani
2014/03/19 13:22:17
Done.
| |
24 // Android. (http://crbug.com/318436). | |
25 #if !defined(OS_ANDROID) | |
26 const char* kTheoraProbablySupported = "probably"; | |
27 const char* kOpusProbablySupported = "probably"; | |
28 const char* kTheoraMaybeSupported = "maybe"; | |
ddorwin
2014/03/18 17:58:02
keep the Theora's together.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
29 #if defined(USE_PROPRIETARY_CODECS) | |
30 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "probably"; | |
31 const char* kTheoraAndProprietaryProbablySupported = "probably"; | |
32 const char* kOpusAndProprietaryProbablySupported = "probably"; | |
33 #else | |
34 const char* kTheoraAndProprietaryProbablySupported = ""; | |
35 const char* kOpusAndProprietaryProbablySupported = ""; | |
36 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "maybe"; | |
ddorwin
2014/03/18 17:58:02
This is a different order than above.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
37 #endif // USE_PROPRIETARY_CODECS | |
38 #else | |
39 const char* kTheoraProbablySupported = ""; | |
40 const char* kOpusProbablySupported = ""; | |
41 const char* kTheoraMaybeSupported = ""; | |
42 const char* kOpusAndProprietaryProbablySupported = ""; | |
43 const char* kTheoraAndProprietaryProbablySupported = ""; | |
44 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = ""; | |
ddorwin
2014/03/18 17:58:02
Order
amogh.bihani
2014/03/19 13:22:17
Done.
| |
45 #endif // !OS_ANDROID | |
46 | |
47 namespace content { | |
48 | |
49 class MediaMimeCanPlayTypeTest : public MediaBrowserTest { | |
50 protected: | |
51 MediaMimeCanPlayTypeTest() { } | |
52 ~MediaMimeCanPlayTypeTest() { } | |
53 | |
54 std::string CanPlayTypeTest(const std::string& commandString) { | |
55 std::string command("document.createElement('video').canPlayType("); | |
56 command.append(commandString); | |
57 command.append(")"); | |
58 | |
59 std::string result; | |
60 EXPECT_TRUE(ExecuteScriptAndExtractString( | |
61 test_shell_->web_contents(), | |
62 "window.domAutomationController.send(" + command + ");", | |
63 &result)); | |
64 return result; | |
65 } | |
66 | |
67 void SetUpShell() { | |
ddorwin
2014/03/18 17:58:02
No, if you use SetUp(), it will automatically be c
amogh.bihani
2014/03/19 13:22:17
Yes, I had tried that but that still gives runtime
ddorwin
2014/03/19 23:28:14
Somehow, a Shell must have already been created ([
| |
68 test_shell_ = CreateBrowser(); | |
69 } | |
70 | |
71 void TearDownShell() { | |
72 test_shell_->Close(); | |
73 } | |
74 private: | |
75 Shell* test_shell_; | |
76 | |
77 DISALLOW_COPY_AND_ASSIGN(MediaMimeCanPlayTypeTest); | |
78 }; | |
79 | |
80 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_wav) { | |
81 SetUpShell(); | |
82 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/wav'")); | |
83 EXPECT_EQ(kProbablySupported, CanPlayTypeTest("'audio/wav; codecs=\"1\"'")); | |
84 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vorbis\"'")); | |
85 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"theora\"'")); | |
86 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp8\"'")); | |
87 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp9\"'")); | |
88 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"opus\"'")); | |
89 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"avc3\"'")); | |
90 EXPECT_EQ(kNotSupported, | |
91 CanPlayTypeTest("'audio/wav; codecs=\"mp4a.40.5\"'")); | |
92 EXPECT_EQ(kNotSupported, | |
93 CanPlayTypeTest("'audio/wav; codecs=\"avc1.4D401E\"'")); | |
94 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"garbage\"'")); | |
95 TearDownShell(); | |
96 } | |
97 | |
98 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_webm) { | |
99 SetUpShell(); | |
100 // video/webm | |
101 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'video/webm'")); | |
102 EXPECT_EQ(kProbablySupported, | |
103 CanPlayTypeTest("'video/webm; codecs=\"vp8\"'")); | |
104 EXPECT_EQ(kProbablySupported, | |
105 CanPlayTypeTest("'video/webm; codecs=\"vp8, vorbis\"'")); | |
106 EXPECT_EQ(kOpusProbablySupported, | |
107 CanPlayTypeTest("'video/webm; codecs=\"vp8, opus\"'")); | |
108 EXPECT_EQ(kProbablySupported, | |
109 CanPlayTypeTest("'video/webm; codecs=\"vp9\"'")); | |
110 EXPECT_EQ(kProbablySupported, | |
111 CanPlayTypeTest("'video/webm; codecs=\"vp9, vorbis\"'")); | |
112 EXPECT_EQ(kOpusProbablySupported, | |
113 CanPlayTypeTest("'video/webm; codecs=\"vp9, opus\"'")); | |
114 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"vp9, 1\"'")); | |
115 EXPECT_EQ(kNotSupported, | |
116 CanPlayTypeTest("'video/webm; codecs=\"vp8, mp4a.40.2\"'")); | |
117 EXPECT_EQ(kNotSupported, | |
118 CanPlayTypeTest("'video/webm; codecs=\"theora\"'")); | |
119 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"1\"'")); | |
120 EXPECT_EQ(kNotSupported, | |
121 CanPlayTypeTest("'video/webm; codecs=\"avc1.4D401E\"'")); | |
122 EXPECT_EQ(kNotSupported, | |
123 CanPlayTypeTest("'video/webm; codecs=\"mp4a.40.2\"'")); | |
124 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"garbage\"'")); | |
125 // audio/webm | |
126 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/webm'")); | |
127 EXPECT_EQ(kProbablySupported, | |
128 CanPlayTypeTest("'audio/webm; codecs=\"vorbis\"'")); | |
129 EXPECT_EQ(kOpusProbablySupported, | |
130 CanPlayTypeTest("'audio/webm; codecs=\"opus\"'")); | |
131 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"1\"'")); | |
132 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp8\"'")); | |
133 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp9\"'")); | |
134 EXPECT_EQ(kNotSupported, | |
135 CanPlayTypeTest("'audio/webm; codecs=\"vp9, opus\"'")); | |
136 EXPECT_EQ(kNotSupported, | |
137 CanPlayTypeTest("'audio/webm; codecs=\"vp9, vorbis\"'")); | |
138 EXPECT_EQ(kNotSupported, | |
139 CanPlayTypeTest("'audio/webm; codecs=\"avc1.4D401E\"'")); | |
140 EXPECT_EQ(kNotSupported, | |
141 CanPlayTypeTest("'audio/webm; codecs=\"mp4a.40.2\"'")); | |
142 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"garbage\"'")); | |
143 TearDownShell(); | |
144 } | |
145 | |
146 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_ogg) { | |
147 SetUpShell(); | |
148 // video/ogg | |
149 EXPECT_EQ(kTheoraMaybeSupported, CanPlayTypeTest("'video/ogg'")); | |
150 EXPECT_EQ(kTheoraProbablySupported, | |
151 CanPlayTypeTest("'video/ogg; codecs=\"theora\"'")); | |
152 EXPECT_EQ(kTheoraProbablySupported, | |
153 CanPlayTypeTest("'video/ogg; codecs=\"theora, vorbis\"'")); | |
154 EXPECT_EQ(kTheoraProbablySupported, | |
155 CanPlayTypeTest("'video/ogg; codecs=\"theora, opus\"'")); | |
156 EXPECT_EQ(kTheoraProbablySupported, | |
157 CanPlayTypeTest("'video/ogg; codecs=\"vp8\"'")); | |
158 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
159 CanPlayTypeTest("'video/ogg; codecs=\"avc1\"'")); | |
160 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
161 CanPlayTypeTest("'video/ogg; codecs=\"avc3\"'")); | |
162 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
163 CanPlayTypeTest("'video/ogg; codecs=\"mp4a\"'")); | |
164 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
165 CanPlayTypeTest("'video/ogg; codecs=\"avc1, mp4a\"'")); | |
166 EXPECT_EQ(kTheoraMaybeSupported, | |
167 CanPlayTypeTest("'video/ogg; codecs=\"avc1.4D401E\"'")); | |
168 EXPECT_EQ(kTheoraMaybeSupported, | |
169 CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F\"'")); | |
170 EXPECT_EQ(kTheoraMaybeSupported, | |
171 CanPlayTypeTest("'video/ogg; codecs=\"mp4a.4.02\"'")); | |
172 EXPECT_EQ(kTheoraMaybeSupported, | |
173 CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'")); | |
174 EXPECT_EQ(kTheoraMaybeSupported, | |
175 CanPlayTypeTest("'video/ogg; codecs=\"garbage\"'")); | |
176 // audio/ogg | |
177 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/ogg'")); | |
178 EXPECT_EQ(kProbablySupported, | |
179 CanPlayTypeTest("'audio/ogg; codecs=\"vorbis\"'")); | |
180 EXPECT_EQ(kTheoraProbablySupported, | |
181 CanPlayTypeTest("'audio/ogg; codecs=\"theora\"'")); | |
182 EXPECT_EQ(kProbablySupported, | |
183 CanPlayTypeTest("'audio/ogg; codecs=\"vp8.0\"'")); | |
184 EXPECT_EQ(kProbablySupported, | |
185 CanPlayTypeTest("'audio/ogg; codecs=\"vp9.0\"'")); | |
186 EXPECT_EQ(kOpusProbablySupported, | |
187 CanPlayTypeTest("'audio/ogg; codecs=\"opus\"'")); | |
188 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
ddorwin
2014/03/18 17:58:02
OOC, is this something that will be fixed in your
amogh.bihani
2014/03/19 13:22:17
Yes. :)
| |
189 CanPlayTypeTest("'audio/ogg; codecs=\"mp4a\"'")); | |
190 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
191 CanPlayTypeTest("'audio/ogg; codecs=\"avc1\"'")); | |
192 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
193 CanPlayTypeTest("'audio/ogg; codecs=\"avc3\"'")); | |
194 EXPECT_EQ(kMaybeSupported, | |
195 CanPlayTypeTest("'audio/ogg; codecs=\"mp4a.40.2\"'")); | |
196 EXPECT_EQ(kMaybeSupported, | |
197 CanPlayTypeTest("'audio/ogg; codecs=\"avc1.4D401E\"'")); | |
198 EXPECT_EQ(kMaybeSupported, | |
199 CanPlayTypeTest("'audio/ogg; codecs=\"avc3.64001F\"'")); | |
200 EXPECT_EQ(kMaybeSupported, | |
201 CanPlayTypeTest("'audio/ogg; codecs=\"garbage\"'")); | |
202 TearDownShell(); | |
203 } | |
204 | |
205 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_mpeg) { | |
206 SetUpShell(); | |
207 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/mp3'")); | |
208 // video/mp4 | |
209 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'video/mp4'")); | |
210 EXPECT_EQ(kProprietaryProbablySupported, | |
211 CanPlayTypeTest("'video/mp4; codecs=\"avc1\"'")); | |
212 EXPECT_EQ(kProprietaryProbablySupported, | |
213 CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); | |
214 EXPECT_EQ(kProprietaryProbablySupported, | |
215 CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); | |
216 EXPECT_EQ(kProprietaryProbablySupported, | |
217 CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); | |
218 EXPECT_EQ(kProprietaryProbablySupported, | |
219 CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); | |
220 EXPECT_EQ(kProprietaryMaybeSupported, | |
221 CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E\"'")); | |
222 EXPECT_EQ(kProprietaryMaybeSupported, | |
223 CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F\"'")); | |
224 EXPECT_EQ(kProprietaryMaybeSupported, | |
225 CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'")); | |
226 EXPECT_EQ(kProprietaryMaybeSupported, | |
227 CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'")); | |
228 EXPECT_EQ(kProprietaryMaybeSupported, | |
229 CanPlayTypeTest("'video/mp4; codecs=\"garbage\"'")); | |
230 EXPECT_EQ(kProprietaryProbablySupported, | |
231 CanPlayTypeTest("'video/mp4; codecs=\"vp8\"'")); | |
232 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
233 CanPlayTypeTest("'video/mp4; codecs=\"opus\"'")); | |
234 EXPECT_EQ(kProprietaryProbablySupported, | |
235 CanPlayTypeTest("'video/mp4; codecs=\"vorbis\"'")); | |
236 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
237 CanPlayTypeTest("'video/mp4; codecs=\"theora\"'")); | |
238 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
239 CanPlayTypeTest("'video/mp4; codecs=\"vp9, opus\"'")); | |
240 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
241 CanPlayTypeTest("'video/mp4; codecs=\"theora, vorbis\"'")); | |
242 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
243 CanPlayTypeTest("'video/mp4; codecs=\"theora, mp4a\"'")); | |
244 EXPECT_EQ(kProprietaryProbablySupported, | |
245 CanPlayTypeTest("'video/mp4; codecs=\"avc1, vorbis\"'")); | |
246 // audio/mpeg | |
247 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mpeg'")); | |
248 EXPECT_EQ(kProprietaryProbablySupported, | |
249 CanPlayTypeTest("'audio/mpeg; codecs=\"mp4a\"'")); | |
250 EXPECT_EQ(kProprietaryProbablySupported, | |
251 CanPlayTypeTest("'audio/mpeg; codecs=\"avc1\"'")); | |
252 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
253 CanPlayTypeTest("'audio/mpeg; codecs=\"opus\"'")); | |
254 EXPECT_EQ(kProprietaryProbablySupported, | |
255 CanPlayTypeTest("'audio/mpeg; codecs=\"vorbis\"'")); | |
256 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
257 CanPlayTypeTest("'audio/mpeg; codecs=\"theora\"'")); | |
258 EXPECT_EQ(kProprietaryProbablySupported, | |
259 CanPlayTypeTest("'audio/mpeg; codecs=\"vp8\"'")); | |
260 // audio/mp3 | |
261 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp3'")); | |
262 EXPECT_EQ(kProprietaryProbablySupported, | |
263 CanPlayTypeTest("'audio/mp3; codecs=\"mp4a\"'")); | |
264 EXPECT_EQ(kProprietaryProbablySupported, | |
265 CanPlayTypeTest("'audio/mp3; codecs=\"avc1\"'")); | |
266 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
267 CanPlayTypeTest("'audio/mp3; codecs=\"opus\"'")); | |
268 EXPECT_EQ(kProprietaryProbablySupported, | |
269 CanPlayTypeTest("'audio/mp3; codecs=\"vorbis\"'")); | |
270 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
271 CanPlayTypeTest("'audio/mp3; codecs=\"theora\"'")); | |
272 EXPECT_EQ(kProprietaryProbablySupported, | |
273 CanPlayTypeTest("'audio/mp3; codecs=\"vp8\"'")); | |
274 // audio/mp4 | |
275 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp4'")); | |
276 EXPECT_EQ(kProprietaryProbablySupported, | |
277 CanPlayTypeTest("'audio/mp4; codecs=\"mp4a\"'")); | |
278 EXPECT_EQ(kProprietaryMaybeSupported, | |
279 CanPlayTypeTest("'audio/mp4; codecs=\"mp4a.40.2\"'")); | |
280 EXPECT_EQ(kProprietaryProbablySupported, | |
281 CanPlayTypeTest("'audio/mp4; codecs=\"avc1\"'")); | |
282 EXPECT_EQ(kProprietaryProbablySupported, | |
283 CanPlayTypeTest("'audio/mp4; codecs=\"avc3\"'")); | |
284 EXPECT_EQ(kProprietaryMaybeSupported, | |
285 CanPlayTypeTest("'audio/mp4; codecs=\"avc1.4D401E\"'")); | |
286 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
287 CanPlayTypeTest("'audio/mp4; codecs=\"opus\"'")); | |
288 EXPECT_EQ(kProprietaryProbablySupported, | |
289 CanPlayTypeTest("'audio/mp4; codecs=\"vorbis\"'")); | |
290 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
291 CanPlayTypeTest("'audio/mp4; codecs=\"theora\"'")); | |
292 EXPECT_EQ(kProprietaryProbablySupported, | |
293 CanPlayTypeTest("'audio/mp4; codecs=\"vp8\"'")); | |
294 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
295 CanPlayTypeTest("'audio/mp4; codecs=\"vp9, opus\"'")); | |
296 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
297 CanPlayTypeTest("'audio/mp4; codecs=\"theora, vorbis\"'")); | |
298 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
299 CanPlayTypeTest("'audio/mp4; codecs=\"theora, mp4a\"'")); | |
300 EXPECT_EQ(kProprietaryProbablySupported, | |
301 CanPlayTypeTest("'audio/mp4; codecs=\"avc1, vorbis\"'")); | |
302 TearDownShell(); | |
303 } | |
304 | |
305 } // namespace content | |
OLD | NEW |