Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Side by Side Diff: content/browser/media/media_canplaytype_browsertest.cc

Issue 186973003: Add browser tests for canPlayType() results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Puting initialize to SetUpOnMainThread Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/content_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 #include "content/test/content_browser_test_utils.h"
11
12 const char* kProbably = "probably";
13 const char* kMaybe = "maybe";
14 const char* kNot = "";
15
16 #if defined(USE_PROPRIETARY_CODECS)
17 const char* kPropProbably = "probably";
18 const char* kPropMaybe = "maybe";
19 const char* kPropProbablyElseMaybe = "probably";
20 #else
21 const char* kPropProbably = "";
22 const char* kPropMaybe = "";
23 const char* kPropProbablyElseMaybe = "maybe";
24 #endif // USE_PROPRIETARY_CODECS
25
26 // TODO(amogh.bihani): Change the opus tests when opus is on
27 // Android. (http://crbug.com/318436).
28 #if !defined(OS_ANDROID)
29 const char* kTheoraProbably = "probably";
30 const char* kTheoraMaybe = "maybe";
31 const char* kOpusProbably = "probably";
32 #if defined(USE_PROPRIETARY_CODECS)
33 const char* kTheoraAndPropProbably = "probably";
34 const char* kTheoraAndPropProbablyElseMaybe = "probably";
35 const char* kOpusAndPropProbably = "probably";
36 #else
37 const char* kTheoraAndPropProbably = "";
38 const char* kTheoraAndPropProbablyElseMaybe = "maybe";
39 const char* kOpusAndPropProbably = "";
40 #endif // USE_PROPRIETARY_CODECS
41 #else
42 const char* kTheoraProbably = "";
43 const char* kTheoraMaybe = "";
44 const char* kOpusProbably = "";
45 const char* kTheoraAndPropProbably = "";
46 const char* kTheoraAndPropProbablyElseMaybe = "";
47 const char* kOpusAndPropProbably = "";
48 #endif // !OS_ANDROID
49
50 namespace content {
51
52 class MediaMimeCanPlayType : public MediaBrowserTest {
ddorwin 2014/03/20 18:04:50 nit: Drop "Mime" and add "Test": MediaCanPlayTypeT
amogh.bihani 2014/03/21 13:52:03 Done.
53 protected:
54 MediaMimeCanPlayType() { }
ddorwin 2014/03/20 18:04:50 It's odd that these are protected. They appear to
amogh.bihani 2014/03/21 13:52:03 It does not allow to remove the constructor. It gi
55 ~MediaMimeCanPlayType() { }
ddorwin 2014/03/20 18:04:50 This should have been virtual, but just remove it.
amogh.bihani 2014/03/21 13:52:03 Done.
56
57 std::string CanPlay(const std::string& type) {
58 std::string command("document.createElement('video').canPlayType(");
59 command.append(type);
60 command.append(")");
61
62 std::string result;
63 EXPECT_TRUE(ExecuteScriptAndExtractString(
64 shell()->web_contents(),
65 "window.domAutomationController.send(" + command + ");",
66 &result));
67 return result;
68 }
69
70 void SetUpOnMainThread() {
ddorwin 2014/03/20 18:04:50 Add virtual and OVERRIDE: virtual void SetUpOnMain
amogh.bihani 2014/03/21 13:52:03 Done.
71 GURL url("about:blank");
ddorwin 2014/03/20 18:04:50 nit: I think it's better to have this function up
amogh.bihani 2014/03/21 13:52:03 Done.
72 NavigateToURL(shell(), url);
73 }
74
75 private:
76 DISALLOW_COPY_AND_ASSIGN(MediaMimeCanPlayType);
77 };
78
ddorwin 2014/03/20 18:04:50 General: We might test that we ignore "profiles" (
79 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayType, CodecSupportTest_wav) {
80 EXPECT_EQ(kMaybe, CanPlay("'audio/wav'"));
81 EXPECT_EQ(kProbably, CanPlay("'audio/wav; codecs=\"1\"'"));
82 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vorbis\"'"));
83 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"theora\"'"));
84 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8\"'"));
85 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp8.0\"'"));
86 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9\"'"));
87 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"vp9.0\"'"));
88 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"opus\"'"));
89 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc3\"'"));
90 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"mp4a.40.5\"'"));
91 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"avc1.4D401E\"'"));
92 EXPECT_EQ(kNot, CanPlay("'audio/wav; codecs=\"garbage\"'"));
ddorwin 2014/03/20 18:04:50 nit: I think we usually use "unknown", which is a
amogh.bihani 2014/03/21 13:52:03 Done.
93 }
94
95 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayType, CodecSupportTest_webm) {
96 // video/webm
97 EXPECT_EQ(kMaybe, CanPlay("'video/webm'"));
98 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8\"'"));
ddorwin 2014/03/20 18:04:50 nit: You can increase readability by adding an emp
99 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0\"'"));
100 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8, vorbis\"'"));
101 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp8.0, vorbis\"'"));
102 EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8, opus\"'"));
103 EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp8.0, opus\"'"));
104 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9\"'"));
ddorwin 2014/03/20 18:04:50 Between vp8 and vp9, which are essentially the sam
105 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9.0\"'"));
106 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9, vorbis\"'"));
107 EXPECT_EQ(kProbably, CanPlay("'video/webm; codecs=\"vp9.0, vorbis\"'"));
108 EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp9, opus\"'"));
109 EXPECT_EQ(kOpusProbably, CanPlay("'video/webm; codecs=\"vp9.0, opus\"'"));
110 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, 1\"'"));
ddorwin 2014/03/20 18:04:50 And before this block of invalid items.
111 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, 1\"'"));
112 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8, mp4a.40.2\"'"));
113 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp8.0, mp4a.40.2\"'"));
114 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, 1\"'"));
115 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, 1\"'"));
116 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9, mp4a.40.2\"'"));
117 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"vp9.0, mp4a.40.2\"'"));
118 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"theora\"'"));
119 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"1\"'"));
120 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"avc1.4D401E\"'"));
121 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"mp4a.40.2\"'"));
122 EXPECT_EQ(kNot, CanPlay("'video/webm; codecs=\"garbage\"'"));
123 // audio/webm
ddorwin 2014/03/20 18:04:50 nit: These comments are a bit redundant. (Normally
amogh.bihani 2014/03/21 13:52:03 Done.
124 EXPECT_EQ(kMaybe, CanPlay("'audio/webm'"));
125 EXPECT_EQ(kProbably, CanPlay("'audio/webm; codecs=\"vorbis\"'"));
ddorwin 2014/03/20 18:04:50 ditto
126 EXPECT_EQ(kOpusProbably, CanPlay("'audio/webm; codecs=\"opus\"'"));
127 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"1\"'"));
ddorwin 2014/03/20 18:04:50 ditto
128 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8\"'"));
129 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0\"'"));
130 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9\"'"));
131 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0\"'"));
132 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, opus\"'"));
133 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, opus\"'"));
134 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8, vorbis\"'"));
135 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp8.0, vorbis\"'"));
136 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, opus\"'"));
137 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, opus\"'"));
138 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9, vorbis\"'"));
139 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"vp9.0, vorbis\"'"));
140 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"avc1.4D401E\"'"));
141 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"mp4a.40.2\"'"));
142 EXPECT_EQ(kNot, CanPlay("'audio/webm; codecs=\"garbage\"'"));
143 }
144
145 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayType, CodecSupportTest_ogg) {
146 // video/ogg
147 EXPECT_EQ(kTheoraMaybe, CanPlay("'video/ogg'"));
148 EXPECT_EQ(kTheoraProbably, CanPlay("'video/ogg; codecs=\"theora\"'"));
149 EXPECT_EQ(kTheoraProbably, CanPlay("'video/ogg; codecs=\"theora, vorbis\"'"));
150 EXPECT_EQ(kTheoraProbably, CanPlay("'video/ogg; codecs=\"theora, opus\"'"));
151 EXPECT_EQ(kTheoraProbably, CanPlay("'video/ogg; codecs=\"vp8\"'"));
152 EXPECT_EQ(kTheoraAndPropProbablyElseMaybe,
ddorwin 2014/03/20 18:04:50 Maybe a todo to fix this with a reference to your
amogh.bihani 2014/03/21 13:52:03 Done.
153 CanPlay("'video/ogg; codecs=\"avc1\"'"));
154 EXPECT_EQ(kTheoraAndPropProbablyElseMaybe,
155 CanPlay("'video/ogg; codecs=\"avc3\"'"));
156 EXPECT_EQ(kTheoraAndPropProbablyElseMaybe,
157 CanPlay("'video/ogg; codecs=\"mp4a\"'"));
158 EXPECT_EQ(kTheoraAndPropProbablyElseMaybe,
159 CanPlay("'video/ogg; codecs=\"avc1, mp4a\"'"));
ddorwin 2014/03/20 18:04:50 You might add a test for avc1 and vorbis - one inv
amogh.bihani 2014/03/21 13:52:03 Done.
160 EXPECT_EQ(kTheoraMaybe, CanPlay("'video/ogg; codecs=\"avc1.4D401E\"'"));
161 EXPECT_EQ(kTheoraMaybe, CanPlay("'video/ogg; codecs=\"avc3.64001F\"'"));
162 EXPECT_EQ(kTheoraMaybe, CanPlay("'video/ogg; codecs=\"mp4a.4.02\"'"));
163 EXPECT_EQ(kTheoraMaybe,
164 CanPlay("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'"));
165 EXPECT_EQ(kTheoraMaybe, CanPlay("'video/ogg; codecs=\"garbage\"'"));
166 // audio/ogg
167 EXPECT_EQ(kMaybe, CanPlay("'audio/ogg'"));
168 EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vorbis\"'"));
169 EXPECT_EQ(kTheoraProbably, CanPlay("'audio/ogg; codecs=\"theora\"'"));
ddorwin 2014/03/20 18:04:50 We should not allow a video codec in "audio/*". If
amogh.bihani 2014/03/21 06:27:08 It will be fixed in other CL. In strict map there
170 EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vp8\"'"));
171 EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vp9\"'"));
172 EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vp8.0\"'"));
173 EXPECT_EQ(kProbably, CanPlay("'audio/ogg; codecs=\"vp9.0\"'"));
174 EXPECT_EQ(kOpusProbably, CanPlay("'audio/ogg; codecs=\"opus\"'"));
175 EXPECT_EQ(kPropProbablyElseMaybe, CanPlay("'audio/ogg; codecs=\"mp4a\"'"));
176 EXPECT_EQ(kPropProbablyElseMaybe, CanPlay("'audio/ogg; codecs=\"avc1\"'"));
ddorwin 2014/03/20 18:04:50 ditto about video codecs
amogh.bihani 2014/03/21 06:27:08 ditto :)
177 EXPECT_EQ(kPropProbablyElseMaybe, CanPlay("'audio/ogg; codecs=\"avc3\"'"));
178 EXPECT_EQ(kMaybe, CanPlay("'audio/ogg; codecs=\"mp4a.40.2\"'"));
ddorwin 2014/03/20 18:04:50 Just checking my understanding: These are maybe be
amogh.bihani 2014/03/21 06:27:08 Yes we do not expect suffix for ogg but right now
179 EXPECT_EQ(kMaybe, CanPlay("'audio/ogg; codecs=\"avc1.4D401E\"'"));
ddorwin 2014/03/20 18:04:50 ditto
180 EXPECT_EQ(kMaybe, CanPlay("'audio/ogg; codecs=\"avc3.64001F\"'"));
181 EXPECT_EQ(kMaybe, CanPlay("'audio/ogg; codecs=\"garbage\"'"));
182 }
183
184 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayType, CodecSupportTest_mpeg) {
185 EXPECT_EQ(kNot, CanPlay("'video/mp3'"));
186 // video/mp4
187 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'"));
188 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1\"'"));
189 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3\"'"));
190 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, mp4a\"'"));
191 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3\"'"));
192 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, mp4a\"'"));
193 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'"));
ddorwin 2014/03/20 18:04:50 It seems backwards that we say probably for a less
amogh.bihani 2014/03/21 06:27:08 yup
194 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3.64001F\"'"));
195 EXPECT_EQ(kPropMaybe,
196 CanPlay("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
197 EXPECT_EQ(kPropMaybe,
198 CanPlay("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'"));
199 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"garbage\"'"));
200 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp8\"'"));
201 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"opus\"'"));
202 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vorbis\"'"));
203 EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'video/mp4; codecs=\"theora\"'"));
204 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'video/mp4; codecs=\"vp9, opus\"'"));
205 EXPECT_EQ(kTheoraAndPropProbably,
206 CanPlay("'video/mp4; codecs=\"theora, vorbis\"'"));
ddorwin 2014/03/20 18:04:50 I wonder if Chrome actually can play these unexpec
207 EXPECT_EQ(kTheoraAndPropProbably,
208 CanPlay("'video/mp4; codecs=\"theora, mp4a\"'"));
209 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1, vorbis\"'"));
210 // audio/mpeg
211 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mpeg'"));
212 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"mp4a\"'"));
ddorwin 2014/03/20 18:04:50 According to [1], this is for mp3. Thus, please ad
213 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"avc1\"'"));
214 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mpeg; codecs=\"opus\"'"));
215 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"vorbis\"'"));
216 EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'audio/mpeg; codecs=\"theora\"'"));
217 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg; codecs=\"vp8\"'"));
218 // audio/mp3
219 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp3'"));
220 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3; codecs=\"mp4a\"'"));
ddorwin 2014/03/20 18:04:50 This is a bug. I think any codecs with audio/mp3 s
amogh.bihani 2014/03/21 06:27:08 My other CL will take care of it. (line 443-445 of
221 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3; codecs=\"avc1\"'"));
222 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp3; codecs=\"opus\"'"));
223 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3; codecs=\"vorbis\"'"));
224 EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'audio/mp3; codecs=\"theora\"'"));
225 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp3; codecs=\"vp8\"'"));
226 // audio/mp4
ddorwin 2014/03/20 18:04:50 Move audio/mp4 up after video/mp4. Actually, mp4
amogh.bihani 2014/03/21 13:52:03 Done.
227 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
228 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
229 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
230 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
ddorwin 2014/03/20 18:04:50 As mentioned earlier, video codecs probably should
amogh.bihani 2014/03/21 06:27:08 My other CL will take care of these :) (Wow... th
231 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
232 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
233 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"opus\"'"));
234 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vorbis\"'"));
235 EXPECT_EQ(kTheoraAndPropProbably, CanPlay("'audio/mp4; codecs=\"theora\"'"));
236 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"vp8\"'"));
237 EXPECT_EQ(kOpusAndPropProbably, CanPlay("'audio/mp4; codecs=\"vp9, opus\"'"));
238 EXPECT_EQ(kTheoraAndPropProbably,
239 CanPlay("'audio/mp4; codecs=\"theora, vorbis\"'"));
240 EXPECT_EQ(kTheoraAndPropProbably,
241 CanPlay("'audio/mp4; codecs=\"theora, mp4a\"'"));
242 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"avc1, vorbis\"'"));
243 }
244
ddorwin 2014/03/20 18:04:50 This is a good set of tests. I see it's still miss
amogh.bihani 2014/03/21 13:52:03 Done.
245 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698