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

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

Issue 408993002: Have media content and chrome browser tests load data from media/test/data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/media/media_browsertest.h" 5 #include "content/browser/media/media_browsertest.h"
6 6
7 #include "base/strings/stringprintf.h"
8 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
9 #include "content/public/browser/web_contents.h" 8 #include "content/public/browser/web_contents.h"
10 #include "content/public/common/url_constants.h"
11 #include "content/public/test/browser_test_utils.h" 9 #include "content/public/test/browser_test_utils.h"
12 #include "content/public/test/content_browser_test_utils.h" 10 #include "content/public/test/content_browser_test_utils.h"
13 #include "content/shell/browser/shell.h" 11 #include "content/shell/browser/shell.h"
14 12
15 // TODO(wolenetz): Fix Media.YUV* tests on MSVS 2012 x64. crbug.com/180074 13 // TODO(wolenetz): Fix Media.YUV* tests on MSVS 2012 x64. crbug.com/180074
16 #if defined(OS_WIN) && defined(ARCH_CPU_X86_64) && _MSC_VER == 1700 14 #if defined(OS_WIN) && defined(ARCH_CPU_X86_64) && _MSC_VER == 1700
17 #define MAYBE(x) DISABLED_##x 15 #define MAYBE(x) DISABLED_##x
18 #else 16 #else
19 #define MAYBE(x) x 17 #define MAYBE(x) x
20 #endif 18 #endif
21 19
22 namespace content { 20 namespace content {
23 21
24 // Common test results. 22 // Common test results.
25 const char MediaBrowserTest::kEnded[] = "ENDED"; 23 const char MediaBrowserTest::kEnded[] = "ENDED";
26 const char MediaBrowserTest::kError[] = "ERROR"; 24 const char MediaBrowserTest::kError[] = "ERROR";
27 const char MediaBrowserTest::kFailed[] = "FAILED"; 25 const char MediaBrowserTest::kFailed[] = "FAILED";
28 26
29 void MediaBrowserTest::RunMediaTestPage( 27 void MediaBrowserTest::RunMediaTestPage(const std::string& html_page,
30 const char* html_page, std::vector<StringPair>* query_params, 28 const media::QueryParams& query_params,
31 const char* expected, bool http) { 29 const std::string& expected_title,
30 bool http) {
32 GURL gurl; 31 GURL gurl;
33 std::string query = ""; 32 std::string query = media::GetURLQueryString(query_params);
34 if (query_params != NULL && !query_params->empty()) { 33 scoped_ptr<net::SpawnedTestServer> http_test_server;
35 std::vector<StringPair>::const_iterator itr = query_params->begin(); 34 if (http) {
36 query = base::StringPrintf("%s=%s", itr->first, itr->second); 35 http_test_server = media::StartMediaHttpTestServer();
37 ++itr; 36 gurl = http_test_server->GetURL("files/" + html_page + "?" + query);
38 for (; itr != query_params->end(); ++itr) { 37 } else {
39 query.append(base::StringPrintf("&%s=%s", itr->first, itr->second)); 38 gurl = content::GetFileUrlWithQuery(media::GetTestDataFilePath(html_page),
40 } 39 query);
41 } 40 }
42 if (http) { 41 std::string final_title = RunTest(gurl, expected_title);
43 ASSERT_TRUE(test_server()->Start());
44 gurl = test_server()->GetURL(
45 base::StringPrintf("files/media/%s?%s", html_page, query.c_str()));
46 } else {
47 base::FilePath test_file_path = GetTestFilePath("media", html_page);
48 gurl = GetFileUrlWithQuery(test_file_path, query);
49 }
50 RunTest(gurl, expected);
51 }
52
53 void MediaBrowserTest::RunTest(const GURL& gurl, const char* expected) {
54 const base::string16 expected_title = base::ASCIIToUTF16(expected);
55 DVLOG(1) << "Running test URL: " << gurl;
56 TitleWatcher title_watcher(shell()->web_contents(), expected_title);
57 AddWaitForTitles(&title_watcher);
58 NavigateToURL(shell(), gurl);
59
60 base::string16 final_title = title_watcher.WaitAndGetTitle();
61 EXPECT_EQ(expected_title, final_title); 42 EXPECT_EQ(expected_title, final_title);
62 } 43 }
63 44
45 std::string MediaBrowserTest::RunTest(const GURL& gurl,
46 const std::string& expected_title) {
47 VLOG(0) << "Running test URL: " << gurl;
48 TitleWatcher title_watcher(shell()->web_contents(),
49 base::ASCIIToUTF16(expected_title));
50 AddWaitForTitles(&title_watcher);
51 NavigateToURL(shell(), gurl);
52 base::string16 result = title_watcher.WaitAndGetTitle();
53 return base::UTF16ToASCII(result);
54 }
55
64 void MediaBrowserTest::AddWaitForTitles(content::TitleWatcher* title_watcher) { 56 void MediaBrowserTest::AddWaitForTitles(content::TitleWatcher* title_watcher) {
65 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kEnded)); 57 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kEnded));
66 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kError)); 58 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kError));
67 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kFailed)); 59 title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kFailed));
68 } 60 }
69 61
70 // Tests playback and seeking of an audio or video file over file or http based 62 // Tests playback and seeking of an audio or video file over file or http based
71 // on a test parameter. Test starts with playback, then, after X seconds or the 63 // on a test parameter. Test starts with playback, then, after X seconds or the
72 // ended event fires, seeks near end of file; see player.html for details. The 64 // ended event fires, seeks near end of file; see player.html for details. The
73 // test completes when either the last 'ended' or an 'error' event fires. 65 // test completes when either the last 'ended' or an 'error' event fires.
74 class MediaTest : public testing::WithParamInterface<bool>, 66 class MediaTest : public testing::WithParamInterface<bool>,
75 public MediaBrowserTest { 67 public MediaBrowserTest {
76 public: 68 public:
77 // Play specified audio over http:// or file:// depending on |http| setting. 69 // Play specified audio over http:// or file:// depending on |http| setting.
78 void PlayAudio(const char* media_file, bool http) { 70 void PlayAudio(const std::string& media_file, bool http) {
79 PlayMedia("audio", media_file, http); 71 PlayMedia("audio", media_file, http);
80 } 72 }
81 73
82 // Play specified video over http:// or file:// depending on |http| setting. 74 // Play specified video over http:// or file:// depending on |http| setting.
83 void PlayVideo(const char* media_file, bool http) { 75 void PlayVideo(const std::string& media_file, bool http) {
84 PlayMedia("video", media_file, http); 76 PlayMedia("video", media_file, http);
85 } 77 }
86 78
87 // Run specified color format test with the expected result. 79 // Run specified color format test with the expected result.
88 void RunColorFormatTest(const char* media_file, const char* expected) { 80 void RunColorFormatTest(const std::string& media_file,
89 base::FilePath test_file_path = GetTestFilePath("media", "blackwhite.html"); 81 const std::string& expected) {
82 base::FilePath test_file_path =
83 media::GetTestDataFilePath("blackwhite.html");
90 RunTest(GetFileUrlWithQuery(test_file_path, media_file), expected); 84 RunTest(GetFileUrlWithQuery(test_file_path, media_file), expected);
91 } 85 }
92 86
93 void PlayMedia(const char* tag, const char* media_file, bool http) { 87 void PlayMedia(const std::string& tag,
94 std::vector<StringPair> query_params; 88 const std::string& media_file,
89 bool http) {
90 media::QueryParams query_params;
95 query_params.push_back(std::make_pair(tag, media_file)); 91 query_params.push_back(std::make_pair(tag, media_file));
96 RunMediaTestPage("player.html", &query_params, kEnded, http); 92 RunMediaTestPage("player.html", query_params, kEnded, http);
97 } 93 }
98 }; 94 };
99 95
100 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearTheora) { 96 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearTheora) {
101 PlayVideo("bear.ogv", GetParam()); 97 PlayVideo("bear.ogv", GetParam());
102 } 98 }
103 99
104 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentTheora) { 100 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentTheora) {
105 PlayVideo("bear_silent.ogv", GetParam()); 101 PlayVideo("bear_silent.ogv", GetParam());
106 } 102 }
(...skipping 26 matching lines...) Expand all
133 // While we support the big endian (be) PCM codecs on Chromium, Quicktime seems 129 // While we support the big endian (be) PCM codecs on Chromium, Quicktime seems
134 // to be the only creator of this format and only for .mov files. 130 // to be the only creator of this format and only for .mov files.
135 // TODO(dalecurtis/ihf): Find or create some .wav test cases for "be" format. 131 // TODO(dalecurtis/ihf): Find or create some .wav test cases for "be" format.
136 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS16be) { 132 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS16be) {
137 PlayVideo("bear_pcm_s16be.mov", GetParam()); 133 PlayVideo("bear_pcm_s16be.mov", GetParam());
138 } 134 }
139 135
140 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS24be) { 136 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS24be) {
141 PlayVideo("bear_pcm_s24be.mov", GetParam()); 137 PlayVideo("bear_pcm_s24be.mov", GetParam());
142 } 138 }
143 #endif 139 #endif // defined(USE_PROPRIETARY_CODECS)
144 140
145 #if defined(OS_CHROMEOS) 141 #if defined(OS_CHROMEOS)
146 #if defined(USE_PROPRIETARY_CODECS) 142 #if defined(USE_PROPRIETARY_CODECS)
147 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4) { 143 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4) {
148 PlayVideo("bear_mpeg4_mp3.avi", GetParam()); 144 PlayVideo("bear_mpeg4_mp3.avi", GetParam());
149 } 145 }
150 146
151 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4Asp) { 147 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4Asp) {
152 PlayVideo("bear_mpeg4asp_mp3.avi", GetParam()); 148 PlayVideo("bear_mpeg4asp_mp3.avi", GetParam());
153 } 149 }
(...skipping 10 matching lines...) Expand all
164 PlayVideo("bear_mpeg4_amrnb.3gp", GetParam()); 160 PlayVideo("bear_mpeg4_amrnb.3gp", GetParam());
165 } 161 }
166 162
167 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavGsmms) { 163 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavGsmms) {
168 PlayAudio("bear_gsm_ms.wav", GetParam()); 164 PlayAudio("bear_gsm_ms.wav", GetParam());
169 } 165 }
170 166
171 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearFlac) { 167 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearFlac) {
172 PlayAudio("bear.flac", GetParam()); 168 PlayAudio("bear.flac", GetParam());
173 } 169 }
174 #endif 170 #endif // defined(USE_PROPRIETARY_CODECS)
175 #endif 171 #endif // defined(OS_CHROMEOS)
172
176 173
177 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavAlaw) { 174 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavAlaw) {
178 PlayAudio("bear_alaw.wav", GetParam()); 175 PlayAudio("bear_alaw.wav", GetParam());
179 } 176 }
180 177
181 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavMulaw) { 178 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavMulaw) {
182 PlayAudio("bear_mulaw.wav", GetParam()); 179 PlayAudio("bear_mulaw.wav", GetParam());
183 } 180 }
184 181
185 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm) { 182 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm) {
(...skipping 16 matching lines...) Expand all
202 IN_PROC_BROWSER_TEST_F(MediaTest, Navigate) { 199 IN_PROC_BROWSER_TEST_F(MediaTest, Navigate) {
203 PlayVideo("bear.ogv", false); 200 PlayVideo("bear.ogv", false);
204 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 201 NavigateToURL(shell(), GURL(url::kAboutBlankURL));
205 EXPECT_FALSE(shell()->web_contents()->IsCrashed()); 202 EXPECT_FALSE(shell()->web_contents()->IsCrashed());
206 } 203 }
207 204
208 INSTANTIATE_TEST_CASE_P(File, MediaTest, ::testing::Values(false)); 205 INSTANTIATE_TEST_CASE_P(File, MediaTest, ::testing::Values(false));
209 INSTANTIATE_TEST_CASE_P(Http, MediaTest, ::testing::Values(true)); 206 INSTANTIATE_TEST_CASE_P(Http, MediaTest, ::testing::Values(true));
210 207
211 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pTheora)) { 208 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pTheora)) {
212 RunColorFormatTest("yuv420p.ogv", "ENDED"); 209 RunColorFormatTest("yuv420p.ogv", kEnded);
213 } 210 }
214 211
215 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pTheora)) { 212 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pTheora)) {
216 RunColorFormatTest("yuv422p.ogv", "ENDED"); 213 RunColorFormatTest("yuv422p.ogv", kEnded);
217 } 214 }
218 215
219 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pTheora)) { 216 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pTheora)) {
220 RunColorFormatTest("yuv444p.ogv", "ENDED"); 217 RunColorFormatTest("yuv444p.ogv", kEnded);
221 } 218 }
222 219
223 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pVp8)) { 220 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pVp8)) {
224 RunColorFormatTest("yuv420p.webm", "ENDED"); 221 RunColorFormatTest("yuv420p.webm", kEnded);
225 } 222 }
226 223
227 // TODO(johannkoenig): Reenable after landing libvpx roll 224 // TODO(johannkoenig): Reenable after landing libvpx roll
228 // http://www.crbug.com/392309 225 // http://www.crbug.com/392309
229 IN_PROC_BROWSER_TEST_F(MediaTest, DISABLED_Yuv444pVp9) { 226 IN_PROC_BROWSER_TEST_F(MediaTest, DISABLED_Yuv444pVp9) {
230 RunColorFormatTest("yuv444p.webm", "ENDED"); 227 RunColorFormatTest("yuv444p.webm", "ENDED");
231 } 228 }
232 229
233 #if defined(USE_PROPRIETARY_CODECS) 230 #if defined(USE_PROPRIETARY_CODECS)
234 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pH264)) { 231 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pH264)) {
235 RunColorFormatTest("yuv420p.mp4", "ENDED"); 232 RunColorFormatTest("yuv420p.mp4", kEnded);
236 } 233 }
237 234
238 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuvj420pH264)) { 235 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuvj420pH264)) {
239 RunColorFormatTest("yuvj420p.mp4", "ENDED"); 236 RunColorFormatTest("yuvj420p.mp4", kEnded);
240 } 237 }
241 238
242 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pH264)) { 239 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pH264)) {
243 RunColorFormatTest("yuv422p.mp4", "ENDED"); 240 RunColorFormatTest("yuv422p.mp4", kEnded);
244 } 241 }
245 242
246 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pH264)) { 243 IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pH264)) {
247 RunColorFormatTest("yuv444p.mp4", "ENDED"); 244 RunColorFormatTest("yuv444p.mp4", kEnded);
248 } 245 }
249 246
250 #if defined(OS_CHROMEOS) 247 #if defined(OS_CHROMEOS)
251 IN_PROC_BROWSER_TEST_F(MediaTest, Yuv420pMpeg4) { 248 IN_PROC_BROWSER_TEST_F(MediaTest, Yuv420pMpeg4) {
252 RunColorFormatTest("yuv420p.avi", "ENDED"); 249 RunColorFormatTest("yuv420p.avi", kEnded);
253 } 250 }
254 #endif // defined(OS_CHROMEOS) 251 #endif // defined(OS_CHROMEOS)
255 #endif // defined(USE_PROPRIETARY_CODECS) 252 #endif // defined(USE_PROPRIETARY_CODECS)
256 253
257 } // namespace content 254 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/media_browsertest.h ('k') | content/browser/media/media_source_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698